【发布时间】:2020-01-09 07:15:50
【问题描述】:
我已经从一个运行良好的 ListView 设置了动态链接,但是现在我正在过滤 ListView 模板中的任何链接都附加了当前的 url。这是我的 urls.py:
urlpatterns = [
path('list/<area>/', ProjectListView.as_view(), name='project-list'),
path('project-create/',
ProjectCreateView.as_view(), name='project-create'),
path('<slug:slug>/update/', project_update_view, name='project-update'),
path('search/', search, name='search'),
]
在模板中,我的链接如下所示:
<h3><a href="{{ project.slug }}/update">{{ project.title }}</a></h3>
我希望它会在这里:
http://127.0.0.1:8000/si/
但它却是在这里寻找:
http://127.0.0.1:8000/si/list/All/
其中添加了“列表”以防止其他 url 错误匹配,如有必要,我可以添加,“全部”来自过滤器的动态变量,将是 8 个不同的字符串之一。
如何让这个 url 查看我在 urls.py 中指定的位置,而不仅仅是附加当前 url?
更新:添加视图:
def project_update_view(request, slug):
"""
project_update_view combines an update form with the update
history.
"""
obj = Project.objects.get(slug=slug)
if request.method == 'POST':
form = ProjectUpdateForm(request.POST)
form.instance.project = obj
if form.is_valid():
completed = form.cleaned_data['completed']
category = form.cleaned_data['category']
if completed is True:
CategorySatisfied.objects.create(
project=obj, update_category=category)
form.save()
return redirect('project-list')
else:
form = ProjectUpdateForm()
context = {
"form": form,
"object": obj
}
return render(request, 'project_portal/project_update.html', context)
【问题讨论】:
-
你在
project_update_view中使用了什么重定向? -
不确定我是否设法将其放入其中,请参阅我更新后的问题以获取视图。
-
Alastair 成功了,不过还是一如既往地感谢您的帮助。
标签: django django-templates django-urls