[Python] Django教程 -展示HTML-

Django是什么

django-logo.jpg

不用Rails,要用Django吗?

网页应用框架中,相比于Django,Rails更为常见并被许多企业采用,但我个人更喜欢Django。下面列举一些使Django成为我喜爱的原因。

用户验证功能,管理界面已默认安装。

创建Rails的管理界面时,我们可以使用像ActiveAdmin这样的gem。在Django中,当创建项目时,会自动创建用户认证功能和管理界面。当然,我们也可以自定义用户模型和管理界面的编辑。由于少了考虑管理界面的事情,我们可以集中精力在应用程序的实现上,非常方便。

スクリーンショット 2019-10-06 13.45.28.png

代码易懂

スクリーンショット 2019-10-06 13.41.24.png

如果你在学习机器学习时使用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 并显示以下画面。

スクリーンショット 2019-10-05 1.14.33.png

创建应用程序

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

スクリーンショット 2019-10-06 13.06.26.png

用以下的命令创建一个名为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
スクリーンショット 2019-10-05 1.50.35.png

将变量传递到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>
スクリーンショット 2019-10-06 13.17.47.png
スクリーンショット 2019-10-06 13.30.48.png

这次我尝试使用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

如果能够继续写下去,我想写下去。

bannerAds