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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值