【发布时间】:2021-10-13 12:31:59
【问题描述】:
我一直在阅读其他解决方案,但没有一个适用于我的项目。这是一个家庭照片数据库。
问题
在正常工作的列表视图中,有两种类型的链接 - 一种在页面顶部创建新记录,另一种用于每个列出的项目以更新所选记录。
单击任一时,我都会收到以下错误。如果我只是输入 URL,我也会得到同样的错误。
NoReverseMatch at /stories/l_memories_update_people/4
Reverse for 'memories_people' not found. 'memories_people' is not a valid view function or pattern name.
.
模型
class memories_people(models.Model):
fk_user = models.ForeignKey(User, default='1', on_delete=models.CASCADE)
name = models.CharField(max_length=750, default='', blank=True, null=True)
def __str__(self):
return self.name
class Meta:
ordering = ('name', )
观看次数
class v_memories_list_people(LoginRequiredMixin, ListView):
model = memories_people
template_name = 'storiesapp/t_memories_list_people.html'
context_object_name = 'people'
ordering = ['name']
class v_memories_update_people(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
model = memories_people
fields = ['fk_user', 'name']
template_name = 'storiesapp/t_memories_update_people.html'
def form_valid(self, form):
form.instance.fk_user = self.request.user
form.save()
return HttpResponseRedirect(self.request.path_info)
def test_func(self):
post = self.get_object()
if self.request.user == post.fk_user:
return True
return False
网址
path('l_memories_list_people',v_memories_list_people.as_view(), name='r_memories_list_people'),
path('l_memories_update_people/<int:pk>',v_memories_update_people.as_view(), name='r_memories_update_people'),
path('l_memories_create_people',v_memories_create_people.as_view(), name='r_memories_create_people'),
模板(列表)
{% load static %}
{% load crispy_forms_tags %}
{% load render_table from django_tables2 %}
{% load mptt_tags %}
<!DOCTYPE html>
<html>
<h1>People</h1>
<h3><a class="nav-item nav-link" href="{% url 'r_memories_create_people' %}">Create</a></h3>
{% block right %}
<table>
{% for people in people %}
<tr>
<td><h3>{{ forloop.counter }}</h3></td><
<td><h3><a href="{% url 'r_memories_update_people' people.id %}">{{ people.name }}</h3></td>
</tr>
{% endfor %}
</table>
{% endblock %}
</html>
模板(更新)
{% extends "storiesapp/memories_base.html" %}
{% load static %}
{% load crispy_forms_tags %}
{% block content %}
<div>
<h1>Update</h5>
</div>
<div class="content_section">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">{{ memories_people.name }}</legend>
<div>{{ form|crispy }}</div>
</fieldset>
# submit button
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Post</button>
</div>
</form>
</div>
{% endblock content %}
【问题讨论】:
-
您正在尝试在模板中使用 URL 来表示
r_memories_create_people,但该名称未在您的urls.py中的任何位置定义 -
感谢您指出这一点,我在粘贴时不小心剪断了该行,但是它存在并且我已经更新了我的问题。无论如何,更新网址也会出现问题。
-
请edit您的问题包含整个堆栈跟踪。
-
对不起,我从来没有听说过这个词,我怎么能包括这个?如果这意味着显示所有未显示的模型和视图,我认为这个问题会膨胀,因为两者都有几十个,大多数与数据库是媒体库的目的无关。
标签: django django-urls