【问题标题】:Generic Class: UpdateView and DeleteView not saving data back to model通用类:UpdateView 和 DeleteView 不将数据保存回模型
【发布时间】:2020-06-04 03:11:17
【问题描述】:

UpdateView 和 DeleteView 不将数据保存回模型

views.py

class ProjectList(ListView):
    model = Project
    template_name = 'mainapp/browse_app.html'
    context_object_name = 'projs'

class ProjectUpdate(UpdateView):
    model = Project
    fields = ['pname','desc','emailID']
    template_name = 'mainapp/project_form_edit.html'

class ProjectDelete(DeleteView):
    model = Project
    fields = ['id','pname','desc','emailID','updated_on']
    template_name = 'mainapp/index.html'
    success_url = reverse_lazy('mainapp/projs')

def form_display(request):
    data = Project.objects.all()
    return render(request,'mainapp/browse_page.html',{'data':data})
...

browse_page.html:有一个编辑链接和一个删除按钮,显示被点击项目的项目详情

{% for i in data %}
    <center>
      <a href="#costumModal13{{ forloop.counter }}" role="button" class="btn btn-default" data-toggle="modal">{{ i }}</a>
    </center>
      <!-- Modal -->
      <div id="costumModal13{{ forloop.counter }}" class="modal" data-easein="bounceLeftIn"  tabindex="-1" role="dialog" aria-labelledby="costumModalLabel" aria-hidden="true">
        <a class="btn btn-info btn-lg fa fa-pencil-square-o" href="{% url 'project_edit' pk=i.id %}" aria-hidden="true">Edit</a>
            <form method="POST" action="{% url 'project_del' pk=i.id %}">
                {% csrf_token %}<input type="submit" value="Delete">
            </form>
            {{ i.pname }}
            {{ i.id }}
            {{ i.updated_on }}
      </div>
{% endfor %}

urls.py

from django.contrib import admin
from django.urls import path, include, re_path
from mainapp import views
from mainapp.views import ProjectUpdate, ProjectDelete

app_name = 'mainapp'
urlpatterns = [
    path('browse/',views.form_display,name="browse_page"),
    re_path(r'^browse/(?P<pk>\d+)/$', ProjectUpdate.as_view(), name='project_edit'),
    re_path(r'^browse/delete/(?P<pk>\d+)/$', ProjectDelete.as_view(), name='project_del'),
]

On submitting the edited form: On clicking on delete button:

你能帮我解决这两个错误吗?

【问题讨论】:

  • 您在此处显示的视图没有多大意义。您是 request 的子类?您在class 范围内创建print 语句?
  • @WillemVanOnsem 抱歉忘记编辑这些内容,正在尝试很多东西,不得不将其编辑为这个小代码 sn-p。现在怎么样?

标签: django django-generic-views


【解决方案1】:

第一张图片问题:

网址末尾附加了 index.html。您的网址定义为/browse/7/

第二张图片问题:

命名空间分隔符是: 而不是/。

class ProjectDelete(DeleteView):
    ...
    success_url = reverse_lazy('mainapp:projs')

【讨论】:

  • 如何从 url 末尾删除附加的 index.html?对于第二个,我没有在我的 urls.py 中定义任何命名空间,我应该添加另一个路径 url,path('browse/delete/',include('app_name.view_name.urls',namespace= “删除”))。不会和已经定义好的路径冲突吗?
  • 我不知道。你是如何生成网址的?您已经使用 app_name 属性定义了一个命名空间。不,你不应该添加另一个 url 路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 2021-01-25
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 2013-02-08
  • 2014-02-01
相关资源
最近更新 更多