原文地址
让我们通过例子来学习
通过这个教程,我们将介绍一个基本的投票应用程序的创建过程。
它由两部分组成:
- 一个允许人们查看和投票的站点。
- 可以添加、更改和删除投票的管理站点。
我们假定你已经安装了Django。在shell命令行运行以下命令你可以知道Django是否安装并且知道Django的版本。
$ python -m django --version
如果安装了Django,你应该看到你安装的版本。如果没有安装,你会得到一个错误提示““No module named django”.
本教程是写给Django1.11 和Python3.4及以后版本的。
Create a project
- 如果这是您第一次使用Django,你必须注意初始设置。即,你创建Django项目需要自动生成一些代码。Django project即一个Python 库即Django实例的代码集合,包括数据库配置,Django特定选项和应用程序特定设置。
- 从命令行,CD进入您希望存储代码的目录,然后运行以下命令:
$ django-admin startproject mysite
这将创建在你的当前目录的mysite目录下。如果命令不起作用,参考django-admin。
注意
项目命名避免Python内置库或者Django组件
让我们看下startproject 命令创建的目录
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
这些文件是:
mysite/根目录外的名字仅仅是一个你的项目容器。这个名字不要紧;可以重新命名。
manage.py:一个命令行工具,可以让你用Django项目以不同的方式进行交互。详情阅读manage.py.
mysite/下目录是您项目的实际Python包。它的名字(mysite)是Python包名,使用里面的所用东西需要用import(例如mysite.urls)
mysite/ __init__ .py:一个空的文件,告诉Python这个目录应该是一个Python包。如果您是python初学者,请阅读官方Python文档中有关包的更多信息。
mysite/ settings.py:这个Django项目/配置设置。Django settings将告诉你所有关于如何设置配置。
mysite/urls. py:这个Django项目的URL声明;更多关于URL的信息。
- mysite/ wsgi.py:web 服务器和Python Django框架的接口WSGI
web server
- 让我们来验证你的Django项目工程。cd 进入mysite根目录,并运行下面的命令:
$ python manage.py runserver
然后再命令行有以下输出:
Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
June 22, 2017 - 15:50:53
Django version 1.11, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
中间的‘You have unapplied migrations; ’的警告,是关于数据库的警告,接下来会说,现在忽略。
你部署了Django web服务器,这是一个纯粹用Python的轻量级Web服务器。我们将这个web 服务器集合在Django中,因此Django可以快速的开发,不需要配置web server。直到准备使用Apache去投入使用。
注意:不要在任何类似生产环境的环境中使用此服务器。它只用于开发时使用。(我们从事的是制作Web框架,而不是Web服务器)。
- 现在,服务器的运行在 HTTP:/ / 127.0.0.1:8000 /。打开您的网页浏览器。你会看到一个“欢迎使用Django”页面!
改变端口
runserver 命令默认端口为8000;
如果想改变端口,可以作为命名行参数改变,此命令在端口8080上启动服务器:
$ python manage.py runserver 8080
如果要更改服务器的IP,请将其与端口一起传递。例如,监听所有可用的公共IP,请使用:
$ python manage.py runserver 0:8080
创建一个Polls app
现在你已经创建好project了,接下来开始做应用了。
你写在Django的每个应用程序是一个遵循一定的公约Python包。Django自带的自动生成程序的基本目录结构,所以你可以专注于编写代码而不是创建目录。
Project vs apps
一个项目和一个应用程序有什么区别?一个应用程序是一个Web应用程序,有–如一个博客系统,一个公共记录或一个简单的投票程序数据库。一个项目是一个特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序。一个应用程序可以在多个项目中。
- 确保在同样的路径下产生APP,用manage.py
python manage.py startapp polls
- polls文档目录结构如下
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
编写第一个view
- 打开 polls/views.py 文件并复制一下代码:
polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
这可能是Django中最简单的view。为了调用视图,我们需要url映射。
- 在polls目录0创建一个url配置文件,urls.py。polls目录如下:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
urls.py
views.py
- 在polls/urls.py文件下复制一下代码:
polls/urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
- 下一步在项目url配置根文件中添加polls.urls模块。添加一个django.conf.urls.include库。代码如下:
mysite/urls.py
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^polls/', include('polls.urls')),
url(r'^admin/', admin.site.urls),
]
- include()函数能引入其他的url配置文件。值得注意的是include那行代码中的正则表达式没有以‘$’字符结束,而是一个‘/’。当Django遇到include()时,如若正则表达式成功匹配到‘/’,即砍掉‘/’以及之前的字符,将余下字符传入引入的url配置文件去进一步处理。
- 让我们看下urls.py以及view是否生效:
$ python manage.py runserver
在浏览器中打开http://localhost:8000/polls/,你将能看到在view中定义的字符串“Hello, world. You’re at the polls index.”
url()中的参数:regex正则表达式
正则表达式是一个字符串匹配语法
- Django从第一个正则表达式开始,到urlpatterns列表结束,比较请求的URL对每个正则表达式,直到找到一个匹配的。
- 注意 正则表达式不匹配域名以及post和get参数。例如:
https://www.example.com/myapp/ urlconf只匹配myapp/
https://www.example.com/myapp/?page=3 urlconf也只匹配myapp/
url()中的参数:view
- 当Django找到正则表达式匹配,Django调用指定的视图函数,用一个HttpRequest对象作为第一个参数,任何“捕获”从正则表达式的值作为其他参数。如果正则表达式使用简单的捕获值,将值作为参数传递;如果使用命名捕获值,将关键字作为参数传递。
url()中的参数:name
将你的url命名,然后就可以在Django中的任何地方使用。尤其是在template模板文件中。
当您熟悉基本的请求和响应流时,请阅读本教程的第2部分以开始使用数据库。