Files
notes_estom/Python/Django/Django-view.md
yinkanglong_lab a5132d34cc python
2021-03-09 20:51:22 +08:00

2.4 KiB
Raw Blame History

Django工程创建

django-admin.py startproject HelloWorld

创建Django项目。其目录结构为|-- HelloWorld //项目的容器内有view控制中心| |-- _init_.py //包声明文件| |-- settings.py //该Django项目的配置文件| |-- urls.py //Django项目的URL声明| `-- wsgi.py //该Django项目的WSGI兼容的web服务器入口python内置服务器程序 `-- manage.py //与项目相关的命令行工具实现与Django的交互。

python manage.py runserver 0.0.0.0:8000

启动服务器,并将该项目部署到服务器当中。

HelloWorld/view.py

from django.http import HttpResponsedef hello(request): return HttpResponse("Hello world ! ")

view文件的标准函数。负责接收request并将request进行处理返回response提供给用户。

Helloworld/urls.py

from django.conf.urls import urlfrom . import viewurlpatterns = [ url(r'^$', view.hello),]

urls文件的标准格式哦调羹说配置URL和view方法之间的对应关系建立URL和view方法之间的映射。其中urlpatterns变量的配置函数如下

url(regex, view, kwargs, name)

regex: 正则表达式匹配相应的url

view: view方法用来吹与正则表达式匹配的url

kwargsview使用的字典类型的参数。

name用来反向获取URL

关于url name的详细说明。

  • 为了在视图渲染过程中获取真正的请求网址。大致理解了一些url可以通过正则表达式匹配到urlpattern中的一个函数但是有的时候这个网址会变化导致原来的匹配不再生效。那么就提供了一种通过名字来匹配具体url的方式。当网址变化时名字已久能帮助原来的url定位到新的网址。

  • 在原网址链接的地方使用名字+参数的方式可以自动渲染成最新的url格式。

原来的匹配项

url(r'^add/(\d+)/(\d+)/$', calc_views.add2, name**=**'add2'),

现在的匹配项

url(r'^new_add/(\d+)/(\d+)/$', calc_views.add2, name**=**'add2'),

原来的链接将不能访问

<a href="/add/4/5/">link</a>

但是通过名字的链接会自动渲染成当前的url匹配模式

<a href="{% url 'add2' 4 5 %}">link</a>

渲染成→<a href="/add/4/5/">link</a>

渲染成→<a href="/new_add/4/5/">link</a>

具体渲染的方式为下面的方式会生成对应的urlpattern。

from django.core.urlresolvers import reverse

reverse('add2', args**=**(a, b))