簡體   English   中英

Django / HTML 提交按鈕重定向到錯誤頁面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM