提交按钮不会刷新页面并发送 POST 请求

问题描述 投票:0回答:1

我正在 Django 上进行注册。我制作了一个表单,添加了一个应该刷新页面并发送 POST 请求的按钮。但该按钮不会更新页面,也不会发送请求。我没有任何 JavaScript 脚本。 我的views.py代码:

from django.shortcuts import render, redirect
from .models import User
from .forms import UserForm
from django.views import View

def index(request): 
    return render(request, 'index.html')

def inn(request):
    return render(request, 'in.html')

class PostCreate(View):    
    def up(self, request):
        form=UserForm(request.POST)
        if form.is_valid():
        form.save()
        return redirect('home')

    def down(request):
        return render(request, 'up.html')`

我的forms.py代码:

from .models import User
from django.forms import ModelForm

class UserForm(ModelForm):
    class Meta:
        model=User
        fields=['NickName', 'Email', 'Password']`

和 HTML: HTML

我试图在互联网上搜索任何信息,但我只找到了有关 event.preventDefault() 和 type='button' 的信息。但我没有任何脚本,我的类型是“提交”

python html django forms
1个回答
0
投票

您没有写

<form>
而是写了
<field>
`,因此它根本不像表单,因此按钮不会提交。

但这不是唯一的问题:您在您的视图中使用

.up(…)
.down(…)
作为方法。默认视图以
.get(…)
.post(…)
和其他 HTTP 方法作为名称。您可以使用
CreateView
 [Django-doc]
:

使工作变得更加方便
from django.urls import reverse_lazy
from django.views.generic.edit import CreateView


class PostCreateView(CreateView):
    form_class = UserForm
    template_name = 'up.html'
    success_url = reverse_lazy('home')

注意:在 Django 中,基于类的视图 (CBV) 通常具有

…View
后缀,以避免与模型名称冲突。 因此,您可以考虑将视图类重命名为
PostCreateView
,而不是
PostCreate

© www.soinside.com 2019 - 2024. All rights reserved.