未找到参数为 '(1,)' 的 'new_entry' 反转尝试了 1 个模式:['new_entry/<int:post_id/$']

如何解决未找到参数为 '(1,)' 的 'new_entry' 反转尝试了 1 个模式:['new_entry/<int:post_id/$']

我目前正在编写“Python 速成课程”一书中的教程。本教程是关于使用 Django 创建“博客”Web 应用程序的。这个想法是在项目中创建一个名为 blogs 的应用程序和一个名为 BlogPost 的模型。模型应该有像 posttextdate_ added 这样的字段。为项目创建一个超级用户,并使用管理站点制作几个简短的帖子。制作一个按时间顺序显示所有帖子的主页。创建一个用于发布新帖子的表单和另一个用于编辑现有帖子的表单。填写您的表格以确保它们有效。

当我运行 http://127.0.0.1:8000/posts/1/

时,我目前无法编辑现有的条目表单并收到错误消息

我已经阅读了与我类似问题的答案,但他们提出的解决方案已经过审核,但仍然出现错误。我不理解为什么。如果有人能帮助我,我将不胜感激。

views.py

from django.shortcuts import render,redirect

from .models import BlogPost,Entry
from .forms import BlogPostForm,EntryForm


def index(request):
    """The home page for blog."""
    return render(request,'blogs/index.html')


def posts(request):
    """Show all posts."""
    posts = BlogPost.objects.order_by('date_added')
    context = {'posts': posts}
    return render(request,'blogs/posts.html',context)


def post(request,post_id):
    """Show a single post and all its entries."""
    post = BlogPost.objects.get(id=post_id)
    entries = post.entry_set.order_by('-date_added')
    context = {'post': post,'entries': entries}
    return render(request,'blogs/post.html',context)


def new_post(request):
    """Add a new post."""
    if request.method != 'POST':
        # No data submitted; create a blank form.
        form = BlogPostForm()
    else:
        # POST data submitted; process data.
        form = BlogPostForm(data=request.POST)
        if form.is_valid():
            form.save()
            return redirect('blogs:posts')

    # display a blank or invalid form.
    context = {'form': form}
    return render(request,'blogs/new_post.html',context)


def new_entry(request,post_id):
    """Add a new entry for a particular post."""
    post = BlogPost.objects.get(id=post_id)

    if request.method != 'POST':
        # No data submitted; create a black form.
        form = EntryForm()
    else:
        # POST data submitted,process data.
        form = EntryForm(data=request.POST)
        if form.is_valid():
            new_entry = form.save(commit=False)
            new_entry.post = post
            new_entry.save()
            return redirect('blogs:post',post_id=post_id)

    # display a blank or invalid form.
    context = {'post': post,'form': form}
    return render(request,'blogs/new_entry.html',context)


def edit_entry(request,entry_id):
    """Edit an existing entry."""
    entry = Entry.objects.get(id=entry_id)
    post = entry.post

    if request.method != 'POST':
        # Initial request; pre-fill form with the current entry.
        form = EntryForm(instance=entry)
    else:
        # POST data submitted; process data.
        form = EntryForm(instance=entry,data=request.POST)
        if form.is_valid():
            form.save()
            return redirect('blogs:post',post_id=post.id)

    context = {'entry': entry,'post': post,'blogs/edit_entry.html',context)

urls.py

"""Defines URL patterns for blogs."""

from django.urls import path

from . import views

app_name = 'blogs'
urlpatterns = [
    # Home page
    path('',views.index,name='index'),# Page that shows all posts.
    path('posts/',views.posts,name='posts'),# Detail page for a single post.
    path('posts/<int:post_id>/',views.post,name='post'),# Page for adding a new post.
    path('new_post/',views.new_post,name='new_post'),# Page for adding a new entry.
    path('new_entry/<int:post_id/',views.new_entry,name='new_entry'),# Page for editing an entry.
    path('edit_entry/<int:entry_id>/',views.edit_entry,name='edit_entry'),]

models.py

from django.db import models


class BlogPost (models.Model):
    """A post the user is learning or writing."""
    post = models.CharField(max_length=80)
    date_added = models.DateTimeField(auto_Now_add=True)

    def __str__(self):
        """Return a string representation of the model."""
        return self.post


class Entry(models.Model):
    """Post content."""
    post = models.ForeignKey(BlogPost,on_delete=models.CASCADE)
    text = models.TextField()
    date_added = models.DateTimeField(auto_Now_add=True)

    class Meta:
        verbose_name_plural = 'entries'

    def __str__(self):
        """Return a string representation of the model"""
        return f"{self.text}"

admin.py

from django.contrib import admin

from .models import BlogPost,Entry

admin.site.register(BlogPost)
admin.site.register(Entry)

forms.py

from django import forms

from .models import BlogPost,Entry


class BlogPostForm(forms.ModelForm):
    class Meta:
        model = BlogPost
        fields = ['post']
        labels = {'post': ''}


class EntryForm(forms.ModelForm):
    class Meta:
        model = Entry
        fields = ['text']
        labels = {'text': ''}
        widgets = {'text': forms.Textarea(attrs={'cols': 80})}

这些是模板:

base.html

<p>
  <a href="{% url 'blogs:index' %}">Carmen's blog</a> -
  <a href="{% url 'blogs:posts' %}">Posts</a>
</p>

{% block content %}{% endblock content %}

posts.html

{% extends 'blogs/base.html' %}

{% block content %}

    <p>Posts</p>

    <ul>
        {% for post in posts %}
            <li>
                <a href="{% url 'blogs:post' post.id %}">{{ post }}</a>
            </li>
        {% empty %}
            <li>No posts have been added yet.</li>
        {% endfor %}
    </ul>

    <a href="{% url 'blogs:new_post' %}">Add a new post</a>

{% endblock content %}

post.html

{% extends 'blogs/base.html' %}

{% block content %}

    <p>Post: {{ post }}</p>

    <p>Entries:</p>
    <p>
        <a href="{% url 'blogs:new_entry' post.id %}">Add new entry</a>
    </p>

    <ul>
       {% for entry in entries %}
        <li>
            <p>{{ entry.date_added|date:'M d,Y H:i' }}</p>
            <p>{{ entry.text|linebreaks }}</p>
            <p>
                <a href="{% url 'blogs:edit_entry' entry.id %}">Edit entry</a>
            </p>
        </li>
        {% empty %}
            <li>There are no entries for this post yet.</li>
        {% endfor %}
    </ul>

{% endblock content %}

new_post.hmtl

{% extends 'blogs/base.html' %}

{% block content %}
    <p>Add a new post:</p>

    <form action="{% url 'blogs:new_post' %}" method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button name="submit">Add post.</button>
    </form>

{% endblock content %}

new_entry.html

{% extends 'blogs/base.html' %}

{% block content %}

    <p><a href="{% url 'blogs:post' post.id %}">{{ post }}</a></p>

    <p>Add a new entry:</p>
    <form action="{% url 'blogs:new_entry' post.id %}" method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button name="submit">Add entry.</button>
    </form>

{% endblock content %}

edit_entry.html

{% extends 'blogs/base.html' %}

{% block content %}

    <p><a href="{% url 'blogs:post' post.id %}">{{ post }}</a></p>

    <p>Edit entry:</p>

    <form action="{% url 'blogs:edit_entry' entry.id %}" method='post'>
        {% csrf_token %}
        {{ form.as_p }}
        <button name="submit">Save changes</button>
    </form>

{% endblock content %}

谢谢十亿,我快崩溃了:(

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?