写在前面
作者在Python 3.6.1 Django 2.1环境下开发Web应用,主要参考Runoob教程,博文大部分内容引用于之。然而,因为Django版本不同,部分操作存在差异。本文主要记录作者对教程的实现过程和遇到的问题。
下文中,Python3的安装路径记为"Python36".
Windows下安装
cmd下输入如下指令,用国内安装源安装Django 2.1:
pip install -i https://pypi.douban.com/simple django==2.1
在Python Shell中查看Django版本,验证安装成功:
>>> import django
>>> django.get_version()
'2.1'
此时 Python36/Scripts 路径下出现 django-admin.py 和 django-admin.exe ,exe文件用于创建Django项目。为方便使用,添加路径"Python36/Scripts"为系统变量。
创建第一个项目
使用Python运行 django-admin.py ,在当前目录下创建 testdj 项目:
python Python36/Scripts/django-admin.py startproject testdj
或运行 django-admin.exe 创建 testdj 项目(推荐这种方法,不然刚才设置Path没什么意义):
django-admin startproject testdj
接下来我们进入 testdj 目录,输入以下命令启动服务器:
python manage.py runserver
终端显示如下信息(服务器IP127.0.0.1,默认端口号8000):
Performing system checks...
System check identified no issues (0 silenced).
You have 15 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 31, 2018 - 16:49:52
Django version 2.1, using settings 'HelloWorld.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
访问127.0.0.1:8000显示如下画面:
视图和 URL 配置
在testdj/testdj新建view.py,定义hello函数,客户端要求访问时,服务器端显示欢迎文本。
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello Django!")
接着,绑定 URL 与视图函数。
Django 1.x:注释掉原来代码,将以下代码复制粘贴到 urls.py 文件中:
from django.conf.urls import url
from . import view
urlpatterns = [
url(r'^$', view.hello),
]
Django 2.x(笔者):
from django.urls import path
from testdj.view import hello
urlpatterns = [
path('', hello),
]
2.x不再有django.conf.urls.url函数,用django.urls.path实现绑定URL的功能。
此时,像刚才一样启动服务器,客户端访问,浏览器会显示"Hello Django!"的文本。
注意网上有些教程(1.x)是这么写的:
from django.conf.urls import url
from . import view
urlpatterns = [
url(r'^Hello/$', view.hello),
]
这是错误的,因为并不存在一个Hello目录。我们的URL就是一个空目录。如果这么写,服务器能正常启用,但访问服务器时报404:
其他问题(应该不会遇到)
如果无法访问,可以尝试修改testdj/testdj/settings.py,这个文件里有这样一行:
ALLOWED_HOSTS = []
改成
ALLOWED_HOSTS = ['*']
表示任意主机可以访问。