django - django:Reverse for 'detail' 没有找不到参数。尝试了 1 种模式:['detail/(?P[0-9]+)/$']
问题描述
我正在尝试使用本地环境在 python3 和 Django 中开发一个 Web 系统。当我尝试使用 DetailView 并在 URL 中添加 pk 时,我被卡住了,我不知道为什么它会显示此错误。我搜索了很多,找不到答案。
我的条件
Mac:mojave 10.14.6
Python:3.7.5
Django:2.2.2
错误信息
Reverse for 'detail' with no arguments not found. 1 pattern(s) tried: ['detail/(?P<pk>[0-9]+)/$']
视图.py
from django.contrib.auth.mixins import LoginRequiredMixin
from django.urls import reverse_lazy
from django.views import generic
class HomeView(LoginRequiredMixin, generic.ListView):
model = DbVegetableInfo
template_name = 'home.html'
def get_queryset(self):
queryset = DbVegetableInfo.objects.filter(user=self.request.user).order_by('-created_at')
return queryset
class DetailView(LoginRequiredMixin, generic.DetailView):
model = DbVegetableInfo
template_name = 'detail.html'
网址.py
from django.urls import path
from . import views
app_name = 'main'
urlpatterns = [
path('home/', views.HomeView.as_view(), name='home'),
path('detail/<int:pk>/', views.DetailView.as_view(), name='detail'),
]
home.html(列表视图)
{% extends "layout/layout_home.html" %}
{% block javascript %}
{% endblock %}
{% block title %}
table
{% endblock %}
{% block content %}
<!-- page content -->
<div class="right_col" role="main">
<div class="">
<div class="page-title">
<div class="title_left">
<h3>test</h3>
</div>
<div class="title_right">
<div class="col-md-5 col-sm-5 col-xs-12 form-group pull-right top_search">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search for...">
<span class="input-group-btn">
<button class="btn btn-secondary" type="button">Go!</button>
</span>
</div>
</div>
</div>
</div>
<div class="clearfix"></div>
<div class="row">
<div class="col-md-8 offset-md-2">
{% if messages %}
<div class="container">
<div class="row">
<div class="my-div-style w-100">
<ul class="messages" style="list-style: none;">
{% for message in messages %}
<li {% if message.tags %} class="{{ message.tags }}" {% endif %}>
{{ message }}
</li>
{% endfor %}
</ul>
</div>
</div>
</div>
{% endif %}
<div class="x_panel">
<div class="x_title">
<h2>test</h2>
<ul class="nav navbar-right panel_toolbox">
<li><a class="collapse-link"><i class="fa fa-chevron-up"></i></a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
aria-expanded="false"><i class="fa fa-wrench"></i></a>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#">Settings 1</a>
<a class="dropdown-item" href="#">Settings 2</a>
</div>
</li>
<li><a class="close-link"><i class="fa fa-close"></i></a>
</li>
</ul>
<div class="clearfix"></div>
</div>
<div class="x_content">
<table class="table table-striped projects" style="text-align: center">
<thead>
<tr>
<th style="width: 1%">#</th>
<th>test</th>
<th>test</th>
<th>test</th>
<th>test</th>
<th>test</th>
<th>test</th>
<th>test</th>
<th>test</th>
<th>test</th>
</tr>
</thead>
<tbody>
{% for vegetable_info in object_list %}
<tr style="font-size: 14px">
<td>
<p> {{ forloop.counter }}</p>
</td>
<td>
<p> {{ vegetable_info.weather_observation }}</p>
</td>
<td>
<p> {{ vegetable_info.field_name }}</p>
</td>
<td>
<p>{{ vegetable_info.plant_name }} </p>
</td>
<td>
<p>{{ vegetable_info.variety_name }} </p>
</td>
<td>
<p> {{ vegetable_info.start_date }}</p>
</td>
<td class="project_progress">
<div class="progress progress_sm">
<div class="progress-bar bg-green" role="progressbar"
data-transitiongoal=""></div>
</div>
<small>%</small>
</td>
<td>
<button type="button" style="pointer-events: none"
class="btn btn-success btn-sm ">test
</button>
</td>
<td>
<p></p>
</td>
<td>
<a href="{% url 'main:detail' object.pk %}"
class="btn btn-primary btn-sm"><i class="fa fa-folder"></i>
detail
</a>
</td>
</tr>
{% empty %}
<p>test</p>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
*我已经尝试过这个案例,但它仍然没有解决...... 反向'编辑'没有找不到参数。尝试了 1 种模式:['articles/edit/(?P<pk>[0-9]+)/$']
解决方案
好的,无论是在您的 home.html 中,您都可以看到如下视图的实例
{% for object in object_list %}
<a href="{% url 'main:detail' object.pk %}"{{ object.title }}</a>
{% endfor %}
或者您可以创建一个单独的列表视图及其模板
推荐阅读
- python - 在 Python 中使用列表综合访问索引
- php - Pimcore - 结构化表格
- java - 如何在 Kotlin 中为当前祈祷设置背景
- c++ - 如何在 sudo 环境中使用 dbus?
- javascript - 使用 configuration.json 中的标志覆盖反应组件的测试用例
- r - 如果 R 脚本的执行被中断,如何自动重新启动它的执行
- wolfram-mathematica - Mathematica 不会将单元格评估为数值
- sql - 将具有 Json 值的列拆分为 Postgres 中的多个列
- reactjs - React 覆盖子元素样式
- python - 基于excel文件在Django中批量创建或更新数据库模型中的对象