Python 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

我今天开始学习Django,但我一直在使用表单。我创建了两个表单:
/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上上传整个代码更容易。我现在用相关代码编辑了这篇文章。谢谢你的建议!当然可以,伙计:)