反转 '' 与参数 '('',)' 未找到。尝试了 1 种模式:['accConnect/setting/(?P<settings_pk>[0-9]+)$']
Reverse for '' with arguments '('',)' not found. 1 pattern(s) tried: ['accConnect/setting/(?P<settings_pk>[0-9]+)$']
我目前 运行 在尝试呈现模型表单时遇到上述错误。
我现在的表格是这样的:
Form.py:
class SettingUpdateForm(ModelForm):
class Meta:
model = SettingsClass
fields = '__all__'
Models.py:
Complex = models.CharField(choices=complex_list , max_length = 22 ,default='1' , unique=True)
#Trial Balance Year To Date
Trial_balance_Year_to_date= models.BooleanField(default = False)
tbytd_Include_opening_balances=models.BooleanField(default = False)
tbytd_Only_use_main_accounts=models.BooleanField(default = False)
tbytd_Print_null_values=models.BooleanField(default = False)
tbytd_Print_description=models.BooleanField(default = True)
tbytd_Print_account=models.BooleanField(default = True)
tbytd_Sort_by_account_name=models.BooleanField(default = True)
#Trial Balance Monthly
Trial_balance_Monthly=models.BooleanField(default = False)
tbm_Only_use_main_accounts=models.BooleanField(default = False)
tbm_Print_null_values=models.BooleanField(default = False)
tbm_Print_description=models.BooleanField(default = True)
tbm_Print_account=models.BooleanField(default = True)
tbm_Sort_by_account_name=models.BooleanField(default = True)
当表单尝试呈现时,它会根据我的 views.py 给出以下错误:
完整的错误信息:
NoReverseMatch at /accConnect/setting/2
Reverse for 'viewSettings' with arguments '('',)' not found. 1 pattern(s) tried: ['accConnect/setting/(?P<settings_pk>[0-9]+)$']
Request Method: GET
Request URL: http://localhost:8000/accConnect/setting/2
Django Version: 3.2
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'viewSettings' with arguments '('',)' not found. 1 pattern(s) tried: ['accConnect/setting/(?P<settings_pk>[0-9]+)$']
Exception Location: C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\lib\site-packages\django\urls\resolvers.py, line 694, in _reverse_with_prefix
Python Executable: C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\python.exe
Python Version: 3.9.4
Python Path:
['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']
Server time: Mon, 20 Sep 2021 06:35:19 +0000
Error during template rendering
In template C:\Users\KylePOG\Documents\GMA Programming\accConnect\main\templates\main\base.html, error at line 11
Reverse for 'viewSettings' with arguments '('',)' not found. 1 pattern(s) tried: ['accConnect/setting/(?P<settings_pk>[0-9]+)$']
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <style type="text/css">
5 /* The sidebar menu */
6 .sidenav {
7 height: 100%; /* Full-height: remove this if you want "auto" height */
8 width: 160px; /* Set the width of the sidebar */
9 position: fixed; /* Fixed Sidebar (stay in place on scroll) */
10 z-index: 1; /* Stay on top */
11 top: 0; /* Stay at the top */
12 left: 0;
13 background-color: #111; /* Black */
14 overflow-x: hidden; /* Disable horizontal scroll */
15 padding-top: 20px;
16 }
17
18 /* The navigation menu links */
19 .sidenav a {
20 padding: 6px 8px 6px 16px;
21 text-decoration: none;
Views.py:
def viewSettings(request, settings_pk):
setting = get_object_or_404(SettingsClass, pk=settings_pk)
if request.method == 'GET':
form = SettingUpdateForm(instance=setting)
return render(request, 'main/viewSettings.html', {'setting': setting, 'form':form})
else:
form = SettingUpdateForm(request.POST, instance=setting)
if form.is_valid():
form.save()
return redirect('settingsHome')
return render(request, 'main/viewSettings.html', {'setting': setting, 'form':form})
我试图用我的 HTML 文档中的设置...替换表格...,其中显示以下内容:
viewSetting.HTML
<form method="POST" action="{% url 'viewSettings' settings.pk %}">
{% csrf_token %}
<div class="container">
<ul class='list-group'>
<li class='list-group-item active'>{{ form.Trial_balance_Year_to_date }} Trial Balance Year To Date</li>
<li class='list-group-item'>{{ form.tbytd_Include_opening_balances }} Include Opening Balances</li>
<li class='list-group-item'>{{ form.tbytd_Only_use_main_accounts }} Only Use Main Accounts</li>
<li class='list-group-item'>{{ form.tbytd_Print_null_values }} Print 0.00 Values</li>
<li class='list-group-item'>{{ form.tbytd_Print_description }} Print Description</li>
<li class='list-group-item'>{{ form.tbytd_Print_account }} Print Account</li>
<li class='list-group-item'>{{ form.tbytd_Sort_by_account_name }} Sort By Account Name</li>
</ul>
<br>
<ul class='list-group'>
<li class='list-group-item active'>{{ form.Trial_balance_Monthly }} Trial Balance Monthly</li>
<li class='list-group-item'>{{ form.tbm_Only_use_main_accounts }} Only Use Main Accounts</li>
<li class='list-group-item'>{{ form.tbm_Print_null_values }} Print 0.00 Values</li>
<li class='list-group-item'>{{ form.tbm_Print_description }} Print Description</li>
<li class='list-group-item'>{{ form.tbm_Print_account }} Print Account</li>
<li class='list-group-item'>{{ form.tbm_Sort_by_account_name }} Sort By Account Name</li>
</ul>
</div>
<br>
<br>
<hr>
<div class="btn-update" style="padding-left: 1%">
<button type="submit" class='btn btn-primary'>Update</button>
<button type="delete" class="btn btn-danger">Delete</button>
</div>
</form>
Urls.py:
from django.contrib import admin
from django.conf.urls import url
from django.urls import path , include
from accounts import views as v
from main import views as views
urlpatterns = [
path('admin/', admin.site.urls),
# Accounts
path('login/home/' , views.home , name = 'home'),
path('', v.register , name='register'),
path('' , include('django.contrib.auth.urls') , name = 'login'),
#Trial Balance
path('KyletrbSettings' , views.KyletrbSettings , name = 'KyletrbSettings'),
path('Kyletrb', views.Kyletrb , name = 'Kyletrb'),
path('KyletrbMonth', views.KyletrbMonth , name = 'KyletrbMonth'),
path('pdf' , views.printToPdf, name='printToPdf'),
path('XLS' , views.printToXLS , name='printToXLS'),
path('trb_Monthly' , views.trb_Monthly , name='trb_Monthly'),
#Settings
path('settings', views.settingsHome , name='settingsHome'),
path('ns' , views.newSetting , name='newSetting'),
path('accConnect/setting/<int:settings_pk>', views.viewSettings, name='viewSettings' ),
]
我似乎找不到这可能是什么问题,我尝试删除表单标签的“操作”部分并呈现表单但是当“更新”时没有任何内容保存到数据库按钮被按下,页面没有按预期重定向
这是导致问题的代码
<form method="POST" action="{% url 'viewSettings' settings.pk %}">
在您的 viewsettings.html 模板中将 settings.pk
替换为 setting.pk
所以你应该有这个 <form method="POST" action="{% url 'viewSettings' setting.pk %}">
在您的 views.py
中,您将设置作为上下文中的对象传递,但在模板中您使用的是设置,因此出现错误
更新
要检查导致表单未提交的原因,您可以执行此操作
def viewSettings(request, settings_pk):
setting = get_object_or_404(SettingsClass, pk=settings_pk)
if request.method == 'GET':
form = SettingUpdateForm(instance=setting)
return render(request, 'main/viewSettings.html', {'setting': setting, 'form':form})
else:
form = SettingUpdateForm(request.POST, instance=setting)
if form.is_valid():
form.save()
return redirect('settingsHome')
else: #add this to your code
print(form.errors)
return render(request, 'main/viewSettings.html', {'setting': setting, 'form':form})
我目前 运行 在尝试呈现模型表单时遇到上述错误。
我现在的表格是这样的:
Form.py:
class SettingUpdateForm(ModelForm):
class Meta:
model = SettingsClass
fields = '__all__'
Models.py:
Complex = models.CharField(choices=complex_list , max_length = 22 ,default='1' , unique=True)
#Trial Balance Year To Date
Trial_balance_Year_to_date= models.BooleanField(default = False)
tbytd_Include_opening_balances=models.BooleanField(default = False)
tbytd_Only_use_main_accounts=models.BooleanField(default = False)
tbytd_Print_null_values=models.BooleanField(default = False)
tbytd_Print_description=models.BooleanField(default = True)
tbytd_Print_account=models.BooleanField(default = True)
tbytd_Sort_by_account_name=models.BooleanField(default = True)
#Trial Balance Monthly
Trial_balance_Monthly=models.BooleanField(default = False)
tbm_Only_use_main_accounts=models.BooleanField(default = False)
tbm_Print_null_values=models.BooleanField(default = False)
tbm_Print_description=models.BooleanField(default = True)
tbm_Print_account=models.BooleanField(default = True)
tbm_Sort_by_account_name=models.BooleanField(default = True)
当表单尝试呈现时,它会根据我的 views.py 给出以下错误:
完整的错误信息:
NoReverseMatch at /accConnect/setting/2
Reverse for 'viewSettings' with arguments '('',)' not found. 1 pattern(s) tried: ['accConnect/setting/(?P<settings_pk>[0-9]+)$']
Request Method: GET
Request URL: http://localhost:8000/accConnect/setting/2
Django Version: 3.2
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'viewSettings' with arguments '('',)' not found. 1 pattern(s) tried: ['accConnect/setting/(?P<settings_pk>[0-9]+)$']
Exception Location: C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\lib\site-packages\django\urls\resolvers.py, line 694, in _reverse_with_prefix
Python Executable: C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\python.exe
Python Version: 3.9.4
Python Path:
['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']
Server time: Mon, 20 Sep 2021 06:35:19 +0000
Error during template rendering
In template C:\Users\KylePOG\Documents\GMA Programming\accConnect\main\templates\main\base.html, error at line 11
Reverse for 'viewSettings' with arguments '('',)' not found. 1 pattern(s) tried: ['accConnect/setting/(?P<settings_pk>[0-9]+)$']
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <style type="text/css">
5 /* The sidebar menu */
6 .sidenav {
7 height: 100%; /* Full-height: remove this if you want "auto" height */
8 width: 160px; /* Set the width of the sidebar */
9 position: fixed; /* Fixed Sidebar (stay in place on scroll) */
10 z-index: 1; /* Stay on top */
11 top: 0; /* Stay at the top */
12 left: 0;
13 background-color: #111; /* Black */
14 overflow-x: hidden; /* Disable horizontal scroll */
15 padding-top: 20px;
16 }
17
18 /* The navigation menu links */
19 .sidenav a {
20 padding: 6px 8px 6px 16px;
21 text-decoration: none;
Views.py:
def viewSettings(request, settings_pk):
setting = get_object_or_404(SettingsClass, pk=settings_pk)
if request.method == 'GET':
form = SettingUpdateForm(instance=setting)
return render(request, 'main/viewSettings.html', {'setting': setting, 'form':form})
else:
form = SettingUpdateForm(request.POST, instance=setting)
if form.is_valid():
form.save()
return redirect('settingsHome')
return render(request, 'main/viewSettings.html', {'setting': setting, 'form':form})
我试图用我的 HTML 文档中的设置...替换表格...,其中显示以下内容:
viewSetting.HTML
<form method="POST" action="{% url 'viewSettings' settings.pk %}">
{% csrf_token %}
<div class="container">
<ul class='list-group'>
<li class='list-group-item active'>{{ form.Trial_balance_Year_to_date }} Trial Balance Year To Date</li>
<li class='list-group-item'>{{ form.tbytd_Include_opening_balances }} Include Opening Balances</li>
<li class='list-group-item'>{{ form.tbytd_Only_use_main_accounts }} Only Use Main Accounts</li>
<li class='list-group-item'>{{ form.tbytd_Print_null_values }} Print 0.00 Values</li>
<li class='list-group-item'>{{ form.tbytd_Print_description }} Print Description</li>
<li class='list-group-item'>{{ form.tbytd_Print_account }} Print Account</li>
<li class='list-group-item'>{{ form.tbytd_Sort_by_account_name }} Sort By Account Name</li>
</ul>
<br>
<ul class='list-group'>
<li class='list-group-item active'>{{ form.Trial_balance_Monthly }} Trial Balance Monthly</li>
<li class='list-group-item'>{{ form.tbm_Only_use_main_accounts }} Only Use Main Accounts</li>
<li class='list-group-item'>{{ form.tbm_Print_null_values }} Print 0.00 Values</li>
<li class='list-group-item'>{{ form.tbm_Print_description }} Print Description</li>
<li class='list-group-item'>{{ form.tbm_Print_account }} Print Account</li>
<li class='list-group-item'>{{ form.tbm_Sort_by_account_name }} Sort By Account Name</li>
</ul>
</div>
<br>
<br>
<hr>
<div class="btn-update" style="padding-left: 1%">
<button type="submit" class='btn btn-primary'>Update</button>
<button type="delete" class="btn btn-danger">Delete</button>
</div>
</form>
Urls.py:
from django.contrib import admin
from django.conf.urls import url
from django.urls import path , include
from accounts import views as v
from main import views as views
urlpatterns = [
path('admin/', admin.site.urls),
# Accounts
path('login/home/' , views.home , name = 'home'),
path('', v.register , name='register'),
path('' , include('django.contrib.auth.urls') , name = 'login'),
#Trial Balance
path('KyletrbSettings' , views.KyletrbSettings , name = 'KyletrbSettings'),
path('Kyletrb', views.Kyletrb , name = 'Kyletrb'),
path('KyletrbMonth', views.KyletrbMonth , name = 'KyletrbMonth'),
path('pdf' , views.printToPdf, name='printToPdf'),
path('XLS' , views.printToXLS , name='printToXLS'),
path('trb_Monthly' , views.trb_Monthly , name='trb_Monthly'),
#Settings
path('settings', views.settingsHome , name='settingsHome'),
path('ns' , views.newSetting , name='newSetting'),
path('accConnect/setting/<int:settings_pk>', views.viewSettings, name='viewSettings' ),
]
我似乎找不到这可能是什么问题,我尝试删除表单标签的“操作”部分并呈现表单但是当“更新”时没有任何内容保存到数据库按钮被按下,页面没有按预期重定向
这是导致问题的代码
<form method="POST" action="{% url 'viewSettings' settings.pk %}">
在您的 viewsettings.html 模板中将 settings.pk
替换为 setting.pk
所以你应该有这个 <form method="POST" action="{% url 'viewSettings' setting.pk %}">
在您的 views.py
中,您将设置作为上下文中的对象传递,但在模板中您使用的是设置,因此出现错误
更新
要检查导致表单未提交的原因,您可以执行此操作
def viewSettings(request, settings_pk):
setting = get_object_or_404(SettingsClass, pk=settings_pk)
if request.method == 'GET':
form = SettingUpdateForm(instance=setting)
return render(request, 'main/viewSettings.html', {'setting': setting, 'form':form})
else:
form = SettingUpdateForm(request.POST, instance=setting)
if form.is_valid():
form.save()
return redirect('settingsHome')
else: #add this to your code
print(form.errors)
return render(request, 'main/viewSettings.html', {'setting': setting, 'form':form})