每当我试图通过Djang的表单编辑任何条目时,我都会得到“AttributeError”

2024-06-16 12:21:47 发布

您现在位置:Python中文网/ 问答频道 /正文

每次我试图通过表单编辑任何条目时,它都会给出属性错误。 我只有一个模型是BlogPost 型号.py

from django.db import models

# Create your models here.

class BlogPost(models.Model):
    """ A title and text for a blog entry"""
    title = models.CharField(max_length=200)
    text = models.TextField()
    date_added = models.DateTimeField(auto_now_add=True)

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

这是视图文件 视图.py

from django.shortcuts import render, redirect

from .models import BlogPost
from .forms import BlogPostForm
def edit_post(request, post_id):
    """ edit an entry"""

    title = BlogPost.objects.get(id=post_id)
    post = title.text

    if request.method != 'POST':
        form = BlogPostForm(instance=post)
    else:
        form = BlogPostForm(instance=post, data=request.POST)
        if form.is_valid():
            form.save()
            return redirect('blogs:index', post_id=title.id)

    context = {'title': title, 'post': post, 'form': form}
    return render(request, 'blogs/edit_post.html', context)

这是编辑后文件 编辑_邮政.html

{extends 'blogs/base.html'}


{% block content %}
  <p>Edit Form:</p>
  <p>{{ title }}:</p>
  <form action="{% url 'blogs:edit_post' title.id %}" method="POST">
    {% csrf_token %}
    {{ form.as_p }}
    <button name="submit">Save changes</button>
  </form>
{% endblock content %}

表单.py

from django import forms

from .models import BlogPost

class BlogPostForm(forms.ModelForm):
    class Meta:
        model = BlogPost
        fields = ['title', 'text']
        labels = {'title':'Title', 'text': 'Post'}
        widgets = {'text': forms.Textarea(attrs={'cols': 80})}

网址.py

# defines urls patterns for the blogs app

from django.urls import path

from . import views

app_name = 'blogs'
urlpatterns = [
    # Home page
    path('', views.index, name='index'),

    # To add new post
    path('new_post/', views.new_post, name='new_post'),

    # To edit post
    path('edit_post/<int:post_id>/', views.edit_post, name='edit_post'),
   ]

我使用的是Django 2.2.6和python 3.7.4。你知道吗

我想我的URL模式或者请求的路径有问题。你知道吗

这就是它产生的错误

TypeError at /edit_post/1/

edit_post() got an unexpected keyword argument 'post_id'

Request Method: GET Request URL: http://localhost:8000/edit_post/1/ Django Version: 2.2.6 Exception Type: TypeError Exception Value:

edit_post() got an unexpected keyword argument 'post_id'

Exception Location: C:\Users\nouma\Desktop\blog_folder\ll_env\lib\site-packages\django\core\handlers\base.py in _get_response, line 113 Python Executable: C:\Users\nouma\Desktop\blog_folder\ll_env\Scripts\python.exe Python Version: 3.7.4 **


Tags: djangotextnamefrompyimportformid
1条回答
网友
1楼 · 发布于 2024-06-16 12:21:47

我有我的答案。问题是在视图文件中我给出了不必要的论证。 i-e公司 返回重定向('博客:索引'邮政编码'=标题id) 第二个论点是不需要的

相关问题 更多 >