python - 未找到带有参数 '('',)' 的 '' 的反向
问题描述
我正在尝试实现一种方法来更改我的应用程序上保存的一些设置,用户应该能够相应地查看和更改这些设置。
但是,在尝试加载“SettingsHome”页面时收到上述错误。
请参阅以下代码和完整的错误消息:
错误:
NoReverseMatch at /settings Reverse for 'viewSettings' 与参数 '('',)' 未找到。尝试了 1 种模式:['accConnect/setting/(?P<settings_pk>[0-9]+)$'] 请求方法:GET 请求 URL:http://localhost:8000/settings Django 版本:3.2 异常类型:NoReverseMatch 异常值:“viewSettings”的反向参数“(”,)”未找到。尝试了 1 种模式:['accConnect/setting/(?P<settings_pk>[0-9]+)$'] 异常位置:C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\lib \site-packages\django\urls\resolvers.py,第 694 行,在 _reverse_with_prefix Python 可执行文件:C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\python.exe Python 版本:3.9.4 Python 路径:
['C:\Users\KylePOG\Documents\GMA Programming\accConnect', 'C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\python39.zip', 'C:\Users\KylePOG\AppData\ Local\Programs\Python\Python39\DLLs','C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\lib','C:\Users\KylePOG\AppData\Local\Programs\Python\Python39' , 'C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\lib\site-packages'] 服务器时间:2021 年 9 月 14 日星期二 08:30:03 +0000 模板渲染时出错在模板 C:\ Users\KylePOG\Documents\GMA Programming\accConnect\main\templates\main\base.html,第 7 行错误未找到带有参数 '('',)' 的 'viewSettings' 的反向操作。尝试了 1 种模式: ['accConnect/setting/(?P<settings_pk>[0-9]+)$'] 1 2 3 4 5 /* 侧边栏菜单/ 6 .sidenav { 7
height: 100%; /全高:如果您想要“自动”高度/ 8 宽度:160 像素,请删除它;/设置侧边栏的宽度/ 9
位置:固定;/固定侧边栏(滚动时保持原位)/ 10
z-index:1;/保持领先/ 11 位居前列:0;/留在顶部/ 12 左:0;13 背景色:#111;/黑色/14
溢出-x:隐藏;/禁用水平滚动 */ 15
填充顶部:20px;16 } 17
代码
视图.py:
def settingsHome(request):
allClass = SettingsClass.objects.all().order_by('Complex')
return render(request, 'main/settingsHome.html' , {'allClass' : allClass})
def viewSettings(request, settings_pk):
setting = get_object_or_404(SettingClass, pk=settings_pk)
if request.method == 'GET':
form = SettingForm(instance=setting)
return render(request, 'meter_readings/viewSettings.html', {'setting': setting, 'form':form})
else:
try:
form = SettingForm(request.POST, instance=setting)
form.save()
return redirect('settingsHome')
except ValueError:
return render(request, 'meter_readings/viewSettings.html', {'setting': setting, 'form':form, 'error':'Bad info'})
viewSettings.html:
{% extends "main/base.html"%}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-wEmeIV1mKuiNpC+IOBjI7aAzPcEZeedi5yW5f2yOq55WWLwNGmvvx4Um1vskeMj0" crossorigin="anonymous">
{% block content %}
{{ error }}
{{ setting.Complex }}
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Update</button>
</form>
{% endblock %}
设置主页.html:
{% extends "main/base.html"%}
{% block content %}
{% for entry in allClass %}
<div class="container">
<div class="row mx-lg-n5">
<a href="{% url 'viewSettings' settings.id %}">» {{ entry.Complex }}</a>
</div>
</div>
{% endfor %}
<br>
<a href="{% url 'newSetting' %}" class="btn btn-primary">➕ Add New Setting</a>
{% endblock %}
网址.py:
#Settings
path('settings', views.settingsHome , name='settingsHome'),
path('ns' , views.newSetting , name='newSetting'),
path('accConnect/setting/<int:settings_pk>', views.viewSettings, name='viewSettings' ),
我认为“pk”实现有问题,但我就是想不通。
如果有人可以在此代码中看到任何错误,请提供帮助。
解决方案
这是您的问题settinghome.html
<a href="{% url 'viewSettings' settings.id %}">» {{ entry.Complex }}</a>,
呈现 settinghome.html 的视图不需要您在ViewSetting
url 上调用的 pk。
更新
使用entry.id
而不是settings.id
{% for entry in allClass %}
<div class="container">
<div class="row mx-lg-n5">
<a href="{% url 'viewSettings' entry.id %}">» {{
entry.Complex }}</a> <!--replace setting.id with entry.id -->
</div>
</div>
{% endfor %}
推荐阅读
- android - 无法在 Android 11 上的 webview 中获取地理位置
- python - 如何在一个购物车中添加多个模型(Django)
- php - Yii2 Active Record 到原始 sql
- google-chrome - Brave Browser:放大网页时的性能
- c++ - protobuf message (c++) 类是否提供 size() 和 empty() 之类的方法?
- python - Python PIL 模块:ModuleNotFoundError:没有名为“PIL”的模块
- python - 在 matplotlib 中,绘制数据的分组条
- javascript - Aws multipart 无法暂停(t.forEach 不是函数)Uppy
- c# - C# - 在地图上显示图钉时如何限制检索的数据
- c# - 对复合主键的两个引用中的共享属性