Python Django表单无效,但未发送错误
我今天开始学习Django,但我一直在使用表单。我创建了两个表单:Python Django表单无效,但未发送错误,python,django,Python,Django,我今天开始学习Django,但我一直在使用表单。我创建了两个表单:/contact和/blog new。联系人页面上的表单工作正常,但在按下提交按钮后,/blog new上的表单将我重定向到主页,并且终端中没有打印任何信息,数据库中也没有保存任何信息 如果有人能向我解释我做错了什么,我将不胜感激,因为我无法理解。谢谢大家! mysite/blog/forms.py from django import forms from .models import BlogPost class Blo
/contact
和/blog new
。联系人页面上的表单工作正常,但在按下提交按钮后,/blog new
上的表单将我重定向到主页,并且终端中没有打印任何信息,数据库中也没有保存任何信息
如果有人能向我解释我做错了什么,我将不胜感激,因为我无法理解。谢谢大家!
mysite/blog/forms.py
from django import forms
from .models import BlogPost
class BlogPostModelForm(forms.ModelForm):
class Meta:
model = BlogPost
fields = ['title', 'slug', 'content']
from .forms import BlogPostModelForm
def blog_post_create_view(request):
# create objects
# ? use a form
# request.user -> return something
form = BlogPostModelForm(request.POST or None)
if form.is_valid():
print(form.cleaned_data)
form.save()
form = BlogPostModelForm()
template_name = 'form.html'
context = {'form': form}
return render(request, template_name, context)
from django.db import models
# Create your models here.
class BlogPost(models.Model):
title = models.TextField()
slug = models.SlugField(unique=True)
content = models.TextField(null=True, blank=True)
from blog.views import (
blog_post_create_view,
)
urlpatterns = [
..
path('blog-new', blog_post_create_view),
..
]
mysite/blog/views.py
from django import forms
from .models import BlogPost
class BlogPostModelForm(forms.ModelForm):
class Meta:
model = BlogPost
fields = ['title', 'slug', 'content']
from .forms import BlogPostModelForm
def blog_post_create_view(request):
# create objects
# ? use a form
# request.user -> return something
form = BlogPostModelForm(request.POST or None)
if form.is_valid():
print(form.cleaned_data)
form.save()
form = BlogPostModelForm()
template_name = 'form.html'
context = {'form': form}
return render(request, template_name, context)
from django.db import models
# Create your models here.
class BlogPost(models.Model):
title = models.TextField()
slug = models.SlugField(unique=True)
content = models.TextField(null=True, blank=True)
from blog.views import (
blog_post_create_view,
)
urlpatterns = [
..
path('blog-new', blog_post_create_view),
..
]
mysite/blog/models.py
from django import forms
from .models import BlogPost
class BlogPostModelForm(forms.ModelForm):
class Meta:
model = BlogPost
fields = ['title', 'slug', 'content']
from .forms import BlogPostModelForm
def blog_post_create_view(request):
# create objects
# ? use a form
# request.user -> return something
form = BlogPostModelForm(request.POST or None)
if form.is_valid():
print(form.cleaned_data)
form.save()
form = BlogPostModelForm()
template_name = 'form.html'
context = {'form': form}
return render(request, template_name, context)
from django.db import models
# Create your models here.
class BlogPost(models.Model):
title = models.TextField()
slug = models.SlugField(unique=True)
content = models.TextField(null=True, blank=True)
from blog.views import (
blog_post_create_view,
)
urlpatterns = [
..
path('blog-new', blog_post_create_view),
..
]
mysite/mysite/url.py
from django import forms
from .models import BlogPost
class BlogPostModelForm(forms.ModelForm):
class Meta:
model = BlogPost
fields = ['title', 'slug', 'content']
from .forms import BlogPostModelForm
def blog_post_create_view(request):
# create objects
# ? use a form
# request.user -> return something
form = BlogPostModelForm(request.POST or None)
if form.is_valid():
print(form.cleaned_data)
form.save()
form = BlogPostModelForm()
template_name = 'form.html'
context = {'form': form}
return render(request, template_name, context)
from django.db import models
# Create your models here.
class BlogPost(models.Model):
title = models.TextField()
slug = models.SlugField(unique=True)
content = models.TextField(null=True, blank=True)
from blog.views import (
blog_post_create_view,
)
urlpatterns = [
..
path('blog-new', blog_post_create_view),
..
]
mysite/templates/form.html
{% extends "base.html" %}
{% block content %}
{% if title %}
<h1>{{ title }}</h1>
{% endif %}
<form method='POST' action='.'> {% csrf_token %}
{{ form.as_p }}
<button type='submit'>Send</button>
</form>
{% endblock %}
{%extends“base.html”%}
{%block content%}
{%if title%}
{{title}}
{%endif%}
{%csrf_令牌%}
{{form.as_p}}
发送
{%endblock%}
您需要在表单的属性中指向正确的url
<form action="/blog-new/" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
您需要在表单的action
属性中指向右侧url
这实际上不是解决办法,而是帮助我找出问题所在的方法
无需指向/blog new/
,因为
操作将指向同一页面,但我已尝试使用/blog new/
作为操作URL,我惊讶地发现/blog new/
页面不存在
错误出现在mysite/mysite/url.py中,原因是缺少/
:
path('blog-new', blog_post_create_view),
很有趣(也很烦人)的是,代码中缺少一个像/
这样的符号会把一切都搞得一团糟,让你花上几个小时试图找到这样简单的解决方案
感谢您花时间查看我的代码并尝试帮助我 如果你把你的代码的相关部分放到你的问题中,你会更容易得到帮助。嗨@marke,对不起,我认为在Github上上传整个代码更容易。我现在用相关代码编辑了这篇文章。谢谢你的建议!当然可以,伙计:)