问题的背景,用户到网页的登录的页面,发现没有账号,就需要跳转到注册的页面,今天我们就看看这个跳转的实现。
首先我们需要给我们的路由取一个别名
如:
文件位置urls.py
给路由设置一个别名,在其他地方引用别名,修改路由,不会影响其他地方运行。
路由别名用在两个地方,一是html模板中转到另外一个页面,另外一个就redirect到某一个网页
html中的使用方法: {% url '别名' %} 在a标签的href属性
在视图中的用法 return redirct(reverse('别名'))
urlpatterns = [
path('login/', views.login),
path('register/', views.register, name='register'),
#给路由设置一个别名,在其他地方引用别名,修改路由,不会影响其他地方运行。
#路由别名用在两个地方,一是html模板中转到另外一个页面,另外一个就redirect到某一个网页
#html中的使用方法: {% url '别名' %} 在a标签的href属性
#在视图中的用法 return redirct(reverse('别名'))
]
//
可以直接跳过这个部分
接下来访问就是看视图中的views.login函数:
登陆函数
这部分需要用户输入的密码和用户名在数据库中的相匹配就可以进入到搜索网页,否则显示登录不成功
def login(request):
if request.method == "GET":
return render(request, "login.html")
if request.method == "POST":
username = request.POST.get("username")
password = request.POST.get("pwd")
if auth.authenticate(username=username,password=password):
user_obj = auth.authenticate(username=username, password=password)
print(user_obj.username) # 在cmd页面显示打印内容
return render(request, 'search_form.html')
else:
return render(request, 'wrong.html')
再看login.html:实现跳转功能
实现跳转功能
<a href="{% url 'register' %}">注册</a>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<h1>登录</h1>
<form action='/login/' method="post">
用户名:<input type="text" name="username" style="margin-left:18px;margin-top:20px" autocomplete="off"><br>
密 码:<input type="password" name="pwd" style="margin-left:30px;margin-top:20px" autocomplete="off"><br>
<input type="submit" value="登录" style="margin-left:80px;margin-top:20px"><br>
</form>
<p>如果没有账号,请先进行注册<p><br/>
<a href="{% url 'register' %}">注册</a>
</body>
</html>
显示效果,到登录界面,点击注册跳转到登录界面。