您的位置:首页 > 编程语言 > Go语言

django开发要点-URL的配置2,在urlconf中增加参数

2015-11-29 13:14 585 查看
urls.py的配置,在这里增加了template_name的参数:

from django.conf.urls import include, url
from django.contrib import admin
from django.conf.urls import patterns

urlpatterns = [
url(r'^admin/', include(admin.site.urls)),

#可以将这种格式精简成下面patterns的前缀格式
#url(r'^books/$', "books.views.book_route", name="books_book"),
#url(r'^books/(?P<key>.+)/$', "books.views.book_detail", name="books_detail"),

#url(r'^contactus/$', "django_forms.views.contactus", name="django_form_contactus"),
#url(r'^contactus/thanks/', "django_forms.views.thanks", name="django_form_thanks"),
]

#采用pattern的写法,减少view的编写
urlpatterns += patterns("books.views",
url(r'^books/$', "book_route", name="books_book"),
url(r'^books/(?P<key>.+)/$', "book_detail", name="books_detail"),
)

#django_forms的views
urlpatterns += patterns("django_forms.views",
url(r'^contactus/$', "contactus", name="django_form_contactus"),
url(r'^contactus/thanks/', "thanks", name="django_form_thanks", kwargs={"template_name":"django_forms/thanks.html"}),
)


django_forms.views.py的配置

#coding=utf-8
from django.shortcuts import render
from .models import ContactUs
from .forms import ContactUsForm
from django.http import HttpResponse, HttpResponseRedirect
import logging

logger = logging.getLogger(__name__)

# Create your views here.
def contactus(request):
#return HttpResponse("<h1>这是一个测试</h1>")

#判断如果是GET则请求,否则作为POS处理
if request.method == "GET":
f = ContactUsForm()
else:
#这个地方必须要首先对Form进行绑定数据
#如果没有绑定数据,始终is_valid会返回false
#POST中包含绑定的数据
f = ContactUsForm(request.POST)
if f.is_valid():
s = f.cleaned_data["subject"]
c = f.cleaned_data["content"]
ex = f.cleaned_data["extra"]
email = f.cleaned_data["email"]

#直接将表单数据保存到数据库中
f.save()
#提交成功,数据进行重定向
#取出最后提交的数据对象
last_one = ContactUs.objects.order_by("-time")[0]
return HttpResponseRedirect("/contactus/thanks/?id=%d" % (last_one.id))
else:
logger.debug(f)
print(f.errors)
assert(False)

forms = f
return render(request,"django_forms/contactus.html", locals())

#对于网址路由,查询是额外的,但是注意书写,?查询之前记得加上路径分隔符/
def thanks(request, template_name):
contanctus_id = request.GET["id"]
if contanctus_id < 0:
return HttpResponseRedirect("无效ID")

#从数据库中取出数据来显示
content = ContactUs.objects.all().get(id=contanctus_id).content
return render(request,template_name, locals())


可以看到thanks的URL配置中kwargs指定了参数会自动传递给路由函数,这样在thanks的函数中就多了一个参数template_name
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: