尝试使用Django #1
简述
一个完全不熟悉Python的初学者通过Django构建Web服务器的经历。
环境
-
- Windows10 home
-
- Anaconda 5.0.1 (Just meでインストール)
-
- Python 3.6.3 :: Anaconda, Inc.
- Django2.0
请使用下列中文选项进行修改:
请就以下内容进行新的阐述:
参考
参考于
依据
我参考了这篇文章。初次创建 Django 应用程序,第一部分。
步骤
安装Django
> pip install Django==2.0
Collecting Django==2.0
Downloading Django-2.0-py3-none-any.whl (7.1MB)
100% |████████████████████████████████| 7.1MB 6.6MB/s
Requirement already satisfied: pytz in c:\users\xxxxx\anaconda3\lib\site-packages (from Django==2.0)
Installing collected packages: Django
Successfully installed Django-2.0
确认版本
使用Python解释器来执行以下代码。
>>> import django
>>> print(django.get_version())
2.0
以下也可以接受。
> python -m django --version
2.0
创建项目
在任意工作目录下执行以下命令。
> django-admin startproject mysite
在作业目录下创建mysite目录。
目录结构如下。
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
这个服务器的配置脚本和(尚未创建的)应用程序(的脚本)的集合被称为项目。
这是从这篇文章引用的内容。
项目是为特定网站收集的应用程序的集合。一个项目可以包含多个应用程序。同时,一个应用程序可以在多个项目中使用。
在这个系列里,我们将在假设最顶层的mysite(以下简称根目录)位于c:的情况下创建项目。
确认开发用服务器启动
转至根目录并执行以下命令。
> python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 29, 2017 - 16:12:09
Django version 2.0, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[29/Dec/2017 16:12:26] "GET / HTTP/1.1" 200 16559
[29/Dec/2017 16:12:26] "GET /static/admin/css/fonts.css HTTP/1.1" 200 423
[29/Dec/2017 16:12:26] "GET /static/admin/fonts/Roboto-Regular-webfont.woff HTTP/1.1" 200 80304
[29/Dec/2017 16:12:26] "GET /static/admin/fonts/Roboto-Bold-webfont.woff HTTP/1.1" 200 82564
[29/Dec/2017 16:12:26] "GET /static/admin/fonts/Roboto-Light-webfont.woff HTTP/1.1" 200 81348
Not Found: /favicon.ico
[29/Dec/2017 16:12:26] "GET /favicon.ico HTTP/1.1" 404 1972
通过这个命令,服务器将会启动。如果已经启动了,通过在浏览器中访问 http://127.0.0.1:8000/ ,您可以访问到以下的页面。感觉很可爱。
如果要指定服务器的IP地址和端口号,请使用以下命令启动服务器。
> python manage.py runserver IPアドレス:ポート番号
停止服务器时,请使用ctrl + c。
显示“Hello World!”
首先,我们要创建一个应用程序。请在根目录下执行以下命令。
>python manage.py startapp myapp
然后目录会被创建,并形成以下的结构。
mysite/
manage.py
myapp/
migrations
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
nysite/
__init__.py
settings.py
urls.py
wsgi.py
首先创建一个运行”Hello World!”的脚本。
编辑位于myapp中的views.py文件。
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello World!')
index函数是以request对象作为参数,并返回HttpResponse对象的函数。
接下来,需要编辑mysite/setting.py文件,将myapp应用程序加载进来进行配置。在INSTALLED_APPS中添加myapp。
…
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp' #ここを追加
]
…
另外,编辑mysite/urls.py文件,将URL与视图进行映射。在urlpatterns中添加(r’^$’,’myapp.views.index’)。
…
from django.contrib import admin
from django.urls import path
from django.conf.urls import url #ここを追加
from .myapp import views #ここを追加
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^$',views.index), #ここを追加
]
将其以HTML形式显示
通过模板系统来展示HTML。
创建以下目录和HTML。
<html>
<body>
{{message}}
</body>
</html>
我将创建一个返回Hello Django的视图。我将按照以下方式编辑mysite/myapp/views.py。
from django.http import HttpResponse
from django.template import loader, RequestContext
def index(request):
contexts = {
'message':'Hello Django',
}
template = loader.get_template('myapp/index.html')
return HttpResponse(template.render(contexts))
创建RequestContext对象,并定义要分配给模板的变量。然后使用loader.get_template调用模板,并使用render方法将模板和变量关联在一起。
我们已经完成了基本的开发用Web服务器的搭建。