我正在 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' 的信息。但我没有任何脚本,我的类型是“提交”
您没有写
<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