url(r"login", views.login),
url(r"yuan_back", views.yuan_back),
-----------------------------------views.py
def login(req):
if req.method=="POST":
if 1:
# return redirect("/yuan_back/")
name="yuanhao"
return render(req,"my backend.html",locals())
return render(req,"login.html",locals())
def yuan_back(req):
name="苑昊"
return render(req,"my backend.html",locals())
-----------------------------------login.html
<form action="/login/" method="post">
<p>姓名<input type="text" name="username"></p>
<p>性别<input type="text" name="sex"></p>
<p>邮箱<input type="text" name="email"></p>
<p><input type="submit" value="submit"></p>
</form>
-----------------------------------my backend.html
<h1>用户{{ name }}你好</h1>
#总结: render和redirect的区别:
# 1 if render的页面需要模板语言渲染,需要的将数据库的数据加载到html,那么所有的这一部分
# 除了写在yuan_back的视图函数中,必须还要写在login中,代码重复,没有解耦.
# 2 the most important: url没有跳转到/yuan_back/,而是还在/login/,所以当刷新后
# 又得重新登录.
from django.shortcuts import render,HttpResponse,render_to_response,redirect
import time
# Create your views here.
def show_time(request):
# return HttpResponse ("Hello")
t=time.ctime()
return render(request,"index.html",{"time":t})
# def article_year(request,year,month):
#
# return HttpResponse(month)
def article_year_month(request,year,month):
return HttpResponse("year:%s month:%s"%(year,month))
def register(request):
print(request.path)
print(request.get_full_path())
# print(request.GET)
# print(request.GET.get("user"))
# print(request.GET.get("age"))
if request.method=="POST":
# print(request.GET)
user=request.POST.get("user")
print(request.POST.get("user"))
print(request.POST.get("age"))
if user=="Hu":
return redirect("http://www.baidu.com")
return HttpResponse("SUCCESS!")
# return render(request,"register.html")
return render_to_response("register.html")
页面渲染: render()(推荐)<br> render_to_response(),
页面跳转: redirect("路径")
locals(): 可以直接将函数中所有的变量传给模板