如何解决Django 中的路径问题
我面临一个路径问题,在点击 /login/
路径中的“登录”按钮后,它会查找 /login/login/
,而在点击“登录”按钮后,我想将其返回到我的根路径。
“signup.html 文件”
<form action="signup/" method="post">
{% csrf_token %}
<input class="text" type="text" name="username" placeholder="Username" required="">
<input class="text email" type="email" name="email" placeholder="Email" required="">
<input class="text" type="password" name="password1" placeholder="Password" required="">
<input class="text w3lpass" type="password" name="password2" placeholder="Confirm Password" required="">
<input class="text" type="text" name="address" placeholder="Address" required="">
<!-- <div class="wthree-text">
<label class="anim">
<input type="checkBox" class="checkBox" required="">
<span>I Agree To The Terms & Conditions</span>
</label>
<div class="clear"> </div>
</div> -->
<input type="submit" value="SIGNUP">
</form>
<form action="login/" method="post">
{% csrf_token %}
<input class="text" type="text" name="username" placeholder="Username" required="">
<input class="text" type="password" name="password" placeholder="Password" required="">
<input type="submit" value="LOGIN">
</form>
“urls.py 文件”
urlpatterns = [
path('',views.signup,name='signup'),path('signup/',path('login/',views.login,name='login'),]
“views.py 文件”
from django.shortcuts import render,redirect
from django.http import HttpResponse
from .models import SignUp
from django.contrib.auth.models import auth
# Create your views here.
def login(request):
if request.method == 'POST':
username= request.POST['username']
password= request.POST['password']
user = auth.authenticate(username=username,password=password)
if user is not None:
auth.login(request,user)
return redirect('')
else:
return render(request,'login.html')
def signup(request):
if request.method == 'POST':
username= request.POST['username']
email= request.POST['email']
password1= request.POST['password1']
password2= request.POST['password2']
address= request.POST['address']
html = "<html><body>Confirm Password and Password should be same </body></html>"
html1= "<html><body>User Already present </body></html>"
if password1 != password2:
return HttpResponse(html)
else:
for instance in SignUp.objects.all():
if (instance.username == username) or (instance.email==email):
return HttpResponse(html1)
signup=SignUp(username=username,email=email,password=password1,address=address)
signup.save()
return redirect('login')
else:
return render(request,'signup.html')
我遇到的错误:
解决方法
您在表单 action
字段中使用了相对路径。使用 action="login/"
代替 action="/login/"
。
如果没有这个,浏览器会将操作路径附加到当前页面路径。因此,如果您在 /login
,并且登录表单提交,浏览器会将其发送到 /login/login/
。
或者,由于 GET 和 POST 页面使用相同的路径,您可以完全省略操作字段。浏览器会自动提交请求到当前路径。
,试试这个。
login.html
<form action="{% url 'login' %}" method="post">
{% csrf_token %}
<input class="text" type="text" name="username" placeholder="Username" required="">
<input class="text" type="password" name="password" placeholder="Password" required="">
<input type="submit" value="LOGIN">
</form>
signup.html
<form action="{% url 'signup' %}" method="post">
{% csrf_token %}
<input class="text" type="text" name="username" placeholder="Username" required="">
<input class="text email" type="email" name="email" placeholder="Email" required="">
<input class="text" type="password" name="password1" placeholder="Password" required="">
<input class="text w3lpass" type="password" name="password2" placeholder="Confirm Password" required="">
<input class="text" type="text" name="address" placeholder="Address" required="">
<!-- <div class="wthree-text">
<label class="anim">
<input type="checkbox" class="checkbox" required="">
<span>I Agree To The Terms & Conditions</span>
</label>
<div class="clear"> </div>
</div> -->
<input type="submit" value="SIGNUP">
</form>
,
开始时,最好使用反向解析 URL 使 html 文件中的所有路径动态化
“urls.py 文件”
urlpatterns = [
path('',views.signup,name='signup'),path('signup/',path('login/',views.login,name='login'),]
注册.html
<form action="{% url 'signup' %}" method="post">
{% csrf_token %}
....
</form>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。