python - 当我从 django 表单按下按钮时,没有任何反应
问题描述
我正在学习 django 表单,我正在尝试创建一个将创建标签的表单,在这里我遇到了一个问题,我试图找出它的问题,但我失败了。当我按下按钮“创建标签”时,什么都没有发生,也没有在views.py中发布方法,它不会引发错误,什么都没有。
表格.py:
from django import forms
from blog.models import Tag, Post
from django.core.exceptions import ValidationError
class TagForm(forms.ModelForm):
class Meta:
model = Tag
fields = ['title', 'slug']
widgets = {
'title': forms.TextInput(attrs={'class': 'form-control'}),
'slug': forms.TextInput(attrs={'class': 'form-control'}),
}
def clean_slug(self):
new_slug = self.cleaned_data['slug'].lower()
if new_slug == 'create':
raise ValidationError('Slug must not be created')
if Tag.objects.filter(slug__iexact=new_slug).count():
raise ValidationError('Slug must be unique. We have "{}" slug already'.format(new_slug))
return new_slug
网址.py:
from django.urls import path
from .views import *
# some-article
urlpatterns = [
path('', posts_list, name='posts_list_url'),
path('post/create/', PostCreate.as_view(), name='post_create_url'),
path('post/<str:slug>/', PostDetail.as_view(), name='post_detail_url'),
path('tags/', tag_list, name='tag_list_url'),
path('tag/create', TagCreate.as_view(), name='tag_create_url'),
path('tag/<str:slug>', TagDetail.as_view(), name='tag_detail_url'),
]
我的html模式:
{% extends 'blog/base_blog.html' %}
{% block title %}
Tag Create - {{ block.super }}
{% endblock %}
{% block content %}
<form action="{% url 'tag_create_url' %}" method="post">
{% csrf_token %}
{% for field in form %}
<div class="form-group">
{% if field.errors %}
<div class="alert alert-danger">
{{ field.errors }}
</div>
{% endif %}
{{ field.label }}
{{ field }}
</div>
{% endfor %}
<button type="submit" class="btn btn-primary">Create Tag</button>
</form>
{% endblock %}
视图.py:
from django.shortcuts import render, redirect
from django.urls import reverse
from django.views.generic import View
from blog.models import Post, Tag
from blog.forms import TagForm, PostForm
from .utils import ObjectDetailMixin
class TagCreate(View):
def get(self, request):
form = TagForm()
return render(request, 'blog/tag_create.html', context={'form': form})
def post(self, request):
bound_form = TagForm(data=request.POST)
if bound_form.is_valid():
new_tag = bound_form.save()
return redirect(new_tag)
return render(request, 'blog/tag_create.html', context={'form': bound_form})
如果有人可以解决它,我将不胜感激!
解决方案
推荐阅读
- java - netbeans显示空白界面
- python - 是否可以仅使用 .pb 文件评估预训练模型?
- python - Python gspread 可以创建一个新的文件夹位置吗?
- javascript - 如何在 javascript / Reactjs 中打开浏览器的新实例?
- ffmpeg - 在 FFMPEG 中叠加介绍标题/视频并一步修复丢失的关键帧
- java - GridGain 无法连接远程 linux 服务器
- python - Django排除查询,我可以传递多个参数吗?
- graph-theory - 转换为完整的二分图
- javascript - JS - 压缩会增加请求大小
- c - CSAPP 第 3 版练习题 8.8,使用信号处理程序