django url逆向解析和django form表单小记

Django URL name详解

# 在 urls.py文件中
urlpatterns = [
    url(r'^$', calc_views.index, name='home'),
    url(r'^add/$', calc_views.add, name='add'),
    url(r'^add/(\d+)/(\d+)/$', calc_views.add2, name='add2'),
    url(r'^admin/', admin.site.urls),
]
// 在html中
link
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
def old_add2_redirect(request, a, b):
    return HttpResponseRedirect(
        reverse('add2', args=(a, b))  # reverse 方法可以导出地址  具体如下
    )
#>>> reverse('add2', args=(4,5))
# u'/add/4/5/'

命名空间 namespace

#  project.urls.py
from django.conf.urls import url,include
urlpatterns = [
    url(r'^a/', include('app01.urls', namespace='author-polls')),
    url(r'^b/', include('app01.urls', namespace='publisher-polls')),
]
# app01.urls.py
from django.conf.urls import url
from app01 import views
 
app_name = 'app01'
urlpatterns = [
    url(r'^(?P\d+)/$', views.detail, name='detail')
]
# app01.views.py
def detail(request, pk):
    print(request.resolver_match)
    return HttpResponse(pk)

以上定义带命名空间的url之后,生成url如下

  • v=reverse('author-polls:detail', kwargs={'pk':11})
  • {% url 'author-polls:detail' pk=11 %}

Django 表单模块

  • tempelate里的表单控件的name(html里) 需要 和 创建的表单类 的 属性名一致

Form表单的功能

  • 自动生成HTML表单元素
  • 检查表单数据的合法性
  • 如果验证错误,重新显示表单(数据不会重置)
  • 数据类型转换(字符类型的数据转换成相应的Python类型)

Form相关的对象包括

  • Widget:用来渲染成HTML元素的工具,如:forms.Textarea对应HTML中的