簡體   English   中英

Django UpdateView 生成“GET”請求而不是“POST”

[英]Django UpdateView generating 'GET' request instead of 'POST'

我正在關注一本名為 Django for Beginners 的書,並創建了一個顯示報紙文章的項目。 部分功能是能夠編輯這些文章。 我已盡可能密切關注,但在點擊“更新”按鈕時仍然出現錯誤:

在此處輸入圖片說明

在此處輸入圖片說明

我的網址.py

from django.urls import path
from .views import (ArticleListView,
 ArticleUpdateView, 
 ArticleDetailView,
 ArticleDeleteView)

urlpatterns = [
    path('<int:pk>/edit/', ArticleUpdateView.as_view(), name = 'article_edit'),
    path('<int:pk>/', ArticleDetailView.as_view(), name = 'article_detail'),
    path('<int:pk>/delete/', ArticleDeleteView.as_view(), name = 'article_delete'),
    path('', ArticleListView.as_view(), name = 'article_list'),
]

我的意見.py

from django.shortcuts import render
from django.views.generic import ListView, DetailView
from django.views.generic.edit import UpdateView, DeleteView
from django.urls import reverse_lazy
from .models import Article

# Create your views here.
class ArticleListView(ListView):
    model = Article
    template_name = 'article_list.html'

class ArticleDetailView(DetailView):
    model = Article
    template_name = 'article_detail.html'

class ArticleUpdateView(UpdateView):
    model = Article
    fields = ('title', 'body')
    template_name = 'article_edit.html'

class ArticleDeleteView(DeleteView):
    model = Article
    template_name = 'article_delete.html'
    success_url = reverse_lazy('article_list')

我的models.py:

from django.db import models
from django.conf import settings
from django.contrib.auth import get_user_model
from django.urls import reverse

# Create your models here.
class Article(models.Model):
    title = models.CharField(max_length=225)
    body = models.TextField()
    date = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(
        get_user_model(),
        on_delete=models.CASCADE,
    )

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        reverse('article_detail', args=[str(self.id)])

我的 HTML:

<!-- templates/article_edit.html -->    
{% extends 'base.html' %}
    
{% block content %}
<h1>Edit</h1>
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}\
<button class="btn btn-info ml-2" type="submit">Update Article {{article.pk}}</button>
</form>
{% endblock content %}

點擊編輯按鈕后,根據這本書,應用程序應該將我轉發到“article_detail”頁面,但這並沒有發生。

任何幫助將不勝感激。

謝謝安迪

最后,它只是在 models.py 中的 get_absolute_url 函數中簡單地省略了 return 語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM