![](/img/trans.png)
[英]Submit button not working and redirecting to 404 error page in Django
[英]Django / HTML Submit button redirecting to the wrong page
我正在嘗試使用 Django 和 HTML 制作注冊表,我正在關注本教程:視頻
2:45:00 進入視頻,我執行與他完全相同的步驟,盡管我的代碼中唯一的區別與我之前的問題有關: 我之前的線程
這是我的 HTML 代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Registration</title>
</head>
<body>
<form action="register" method="post">
{% csrf_token %}
<input type="text" name="first_name" placeholder="First Name"><br>
<input type="text" name="last_name" placeholder="Last Name"><br>
<input type="text" name="username" placeholder="Username"><br>
<input type="email" name="email" placeholder="Email"><br>
<input type="password" name="password1" placeholder="Password"><br>
<input type="password" name="password2" placeholder="Confirm Password"><br>
<input type="Submit">
</form>
</body>
</html>
這是我的views.py:
from django.shortcuts import render, redirect
from django.contrib.auth.models import User, auth
def register(request):
if (request.method == 'post'):
first_name = request.POST['first_name']
last_name = request.POST['last_name']
username = request.POST['username']
password1 = request.POST['password1']
password2 = request.POST['password2']
email = request.POST['email']
user = User.objects.create_user(username=username, password=password1, email=email, first_name=first_name, last_name=last_name)
user.save()
print('user created')
return redirect('')
else:
return render(request, 'register.html')
但是,似乎當我按下“提交”時,而不是按鈕實際讀取views.py代碼並檢查IF語句,它只是將我重定向到localhost:8000/account/register/register,這是完全錯誤的,例如如此處所示: Imgur 鏈接
我不確定我做錯了什么,以及為什么我的代碼表現不同,即使我正在做教程人在他的視頻中所做的事情?
任何幫助將非常感激。
他的代碼完全是錯誤的。 你不能像那樣把視圖名稱放在action
屬性中; 它必須是一條實際路徑。 由於您的 URL 是“/account/register”,這就是您應該使用的。
但是一個不錯的教程會引入{% url %}
標簽。 而且,事實上,一個不錯的教程會在這里使用 Django forms; 他似乎完全忽略了驗證,這是不可原諒的。 我建議找一個不同的教程。
(注意,您自己在復制他的代碼時犯了錯誤;在您檢查request.method
的視圖中,它必須是“POST”,而不是“post”。)
解決方案可以如下:
if (request.method == '**POST**'):
return redirect('**/**')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.