[Python] Django教程 -展示HTML-
Django是什么

不用Rails,要用Django吗?
网页应用框架中,相比于Django,Rails更为常见并被许多企业采用,但我个人更喜欢Django。下面列举一些使Django成为我喜爱的原因。
用户验证功能,管理界面已默认安装。
创建Rails的管理界面时,我们可以使用像ActiveAdmin这样的gem。在Django中,当创建项目时,会自动创建用户认证功能和管理界面。当然,我们也可以自定义用户模型和管理界面的编辑。由于少了考虑管理界面的事情,我们可以集中精力在应用程序的实现上,非常方便。

代码易懂

如果你在学习机器学习时使用Python,那么与Django兼容性就很高。与Rails相比,Django由于缺乏日语说明感觉更难一些,但官方文档简单易懂是一个好的方面。
安装Django
我要确认Python已经安装了。
$ python -V
Python 3.6.6 # 3.5以上にしましょう
Django的安装
$ pip install django
我要确认Django是否已经安装。
$ python
>>> import django
>>> print(django.get_version())
2.0.2
创建项目
使用以下命令创建项目。项目名称为mysite。
$ django-admin startproject mysite
在项目目录下会生成以下文件。
mysite/
- manage.py
- mysite/
- __init__.py
- settings.py
- urls.py
- wsgi.py
让我们切换到项目目录,启动服务器并在浏览器中查看。
$ cd mysite
$ python manage.py runserver
确保打开 localhost:8000 并显示以下画面。

创建应用程序
在Django中,我们将应用程序功能的包置于项目下。

用以下的命令创建一个名为memo_app的应用程序。
$ python manage.py startapp memo_app
将会生成以下文件。
mysite/
- manage.py
- mysite/
- memo_app/
- __init__.py
- admin.py
- apps.py
- migrations/
- __init__.py
- models.py
- tests.py
- views.py
请在mysite/settings.py文件中添加memo_app应用程序作为项目的配置文件。创建应用程序后,请务必执行此操作。
# mysite/settings.py
...
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'memo_app', # ここ
]
...
展示“Hello World”。
先试着在浏览器上实现一个简单的“Hello World”的显示。
-
- テンプレートと呼ばれるHTMLファイルを作成する
-
- ビューにテンプレートを呼び出す関数を定義する
- ビューを表示するためのURLを定義する
在memo_app目录下创建一个名为templates的文件夹。
$ mkdir memo_app/templates
我们在下面创建一个index.html文件,并编写HTML代码以显示”Hello World”。
<!-- memo_app/templates/index.html -->
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>memo_app</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
我要修改memo_app/views.py文件。
# memo_app/views.py
from django.shortcuts import render
def index(request):
return render(request, 'index.html') # 先ほど作成したhtmlを第2引数に指定する
创建memo_app/urls.py文件,并定义URL。
# memo_app/urls.py
from django.urls import path
from . import views
app_name = 'memo_app'
urlpatterns = [
path('index/', views.index, name='index'),
]
通过path函数的第一个参数指定URL,并通过第二个参数指定URL对应的视图。
在整個項目的URL設定檔案mysite/urls.py中添加memo_app/urls.py。
# mysite/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('memo_app/', include('memo_app.urls')),
]
让我们启动服务器,并打开 localhost:8000/memo_app/index。
$ python manage.py runserver

将变量传递到HTML页面
让我们将memo_app/views.py文件进行以下更改。
# memo_app/views.py
from django.shortcuts import render
def index(request):
return render(request, 'index.html', {'text': 'This page is memo_app/index.html'})
只需一种选项:可以通过render函数的第三个参数将指定的字典传递给模板。在模板中,通过用双大括号{{ text }}包围传递的变量,可以显示该变量的值。
<!-- memo_app/templates/index.html -->
...
<body>
<h1>Hello World</h1>
<p>{{ text }}</p>
</body>
</html>


这次我尝试使用Django来显示我自己创建的HTML文件。而且,我还将任意变量的值应用到模板中进行显示。当前目录的状态如下所示。
mysite/
- manage.py
- memo_app/
- __init__.py
- admin.py
- apps.py
- migrations/
- __init__.py
- models.py
- templates/
- index.html
- tests.py
- urls.py
- views.py
- mysite/
- __init__.py
- settings.py
- urls.py
- wsgi.py
如果能够继续写下去,我想写下去。