【创建一个投票APP】
在Django的项目里,每个APP约定俗成由一个python的包构成。Django会自动生成APP的目录结构,这样你就可以专心编写代码而不用为组织目录烦恼了。
Projects 和 APP 的区别:
APP是实现某一具体的需求,Projects是一系列需求的集合。一个网站可以看作Projects,网站中的一个登陆页可以看作一个APP。
APP目录可以放置在任意的python模块路径下。在教程中,我们把投票APP放置在manage.py文件的同级目录下,这样该目录就是自身最上层模块,导入时就不用引用mysite这个模块了。
在manage.py同级目录下运行命令:
python manage.py startapp polls
运行成功后将创建APP
目录
【完成第一个视图】
打开polls/views.py,写入以下代码:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello,world!This is polls index.");
这是最简单的django视图。为了展示这个视图,我们需要配置URL映射并且需要一个URLconf
建立polls/urls.py文件,写入以下代码:
from django.urls import path
from . import views
urlpatterns = [
path('',views.index,name='index'),
]
接下来将配置根目录URL文件,在mysite/urls.py文件
写入代码:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('polls/',include('polls.urls')),
]
上述代码导入了include模块,向根URL添加polls.urls路径。
include() 函数可以引用其他url配置,include的设计思想来源于“即插即用",因为polls有自己的URL配置文件,他们能够在"polls/"这个路径匹配时被替换,或者在根目录配置成"fun_polls/"、"content/polls"或其他任何你喜欢的路径,这个app都会正常运行。
原则上,任何APP的路径都应该这么配置,除了"admin.site.urls"这个特殊路径。
path() 函数可传入4个参数:route, view, kwargs, name
route | URL的匹配模式,Django默认从URL列表按顺序匹配。它不会匹配host地址或GET、POST的附加参数 |
view | 当符合route的匹配模式时,Django调用view方法。方法的第一个参数是HttpRequest对象,并接收其他从URL中“捕获”到的键值对参数 |
kwargs | 通过字典的形式可以向目标view传递任意的key-value参数 |
name | 给你的URL起个名字,方便在其他地方明确的引用。这个强大的特性能够让你轻易的对项目的URL匹配模式做出全局改变 |