我目前在嘗試渲染一個模型表單時遇到了上述錯誤。
我的表單目前看起來是這樣的:
Form.py:
Form.py:
class SettingUpdateForm(ModelForm)。
class Meta:
model = SettingsClass
fields = '__all__': model = SettingsClass
Models.py:
Complex = models.CharField(options=complex_list , max_length = 22 , default='1' , unique=True)
#Trial Balance Year To Date[/span]。
Trial_balance_Year_to_date= models.BooleanField(default = False)
tbytd_Include_opening_balances=models.BooleanField(默認=False)
tbytd_Only_use_main_accounts=models.BooleanField(默認=False)
tbytd_Print_null_values=models.BooleanField(默認=False)
tbytd_Print_description=models.BooleanField(默認=True)
tbytd_Print_account=models.BooleanField(默認=True)
tbytd_Sort_by_account_name=models.BooleanField(默認=True)
#Trial Balance Monthly[/span]。
Trial_balance_Monthly=models.BooleanField(默認=False)
tbm_Only_use_main_accounts=models.BooleanField(默認=False)
tbm_Print_null_values=models.BooleanField(默認=False)
tbm_Print_description=models.BooleanField(默認=True)
tbm_Print_account=models.BooleanField(默認=True)
tbm_Sort_by_account_name=models.BooleanField(默認=True)
當表單試圖呈現時,根據我的views.py,它給出了以下錯誤:
完整的錯誤資訊:
當表單試圖呈現時,它給出了以下錯誤。
完整的錯誤資訊:
NoReverseMatch at /accConnect/setting/2。
反向for 'viewSettings' with arguments ' ('', )' 沒有發現。1 嘗試的模式(s)。['accConnect/setting/(?P<settings_pk> [0-9] )$']
請求方法。請求方法: GET
請求URL: http://localhost:8000/accConnect/setting/2。
Django版本。3.2Django版本:3.2
例外 型別: NoReverseMatch
例外值。
Reverse for 'viewSettings' with arguments ' ('', )' 沒有發現。1 嘗試的模式(s)。['accConnect/setting/(?P<settings_pk> [0-9] )$']
例外位置。C:UsersKylePOGAppDataLocalProgramsPythonPython39libsite-packagesdjangourls
esolvers.py, 行 694, in _reverse_with_prefix
Python可執行程式。 C:UsersKylePOGAppDataLocalProgramsPythonPython39python.exe
Python版本。3.9.4。
Python路徑。
['C:UsersKylePOGDocumentsGMA ProgrammingaccConnect'/span>。
'C:UsersKylePOGAppDataLocalProgramsPython39python39.zip'。
'C:UsersKylePOGAppDataLocalProgramsPythonPython39DLLs'。
'C:UsersKylePOGAppDataLocalProgramsPythonPython39lib'。
'C:UsersKylePOGAppDataLocalProgramsPythonPython39'。
'C:UsersKylePOGAppDataLocalProgramsPythonPython39libsite-packages'] 。
服務器時間。 Mon, 20 Sep 2021 06:35:19 0000
模板渲染時出錯
在模板C:UsersKylePOGDocumentsGMA ProgrammingaccConnectmain emplatesmainase.html中,錯誤在11行
倒退for 'viewSettings' with arguments ' ('' 。 )' 沒有發現。1 嘗試的模式(s)。['accConnect/setting/(?P<settings_pk> [0-9] )$']
1 <! DOCTYPE html>
2 <html lang="en"/span>>
3 <head>
4 <style type="text/css"/span>>
5 /* 側邊欄的選單 */
6 .sidenav {
7 高度。100%; /* 全高:移除此如果你想要"auto"高度 */
8 width: 160px; /* Set 側邊欄的寬度 */
9 position: fixed; /* 固定邊欄(在滾動時保持在位置) */
10 z-index: 1; /*停留在頂部 */
11 top: 0; /*停留在頂部 */
12 left: 0;
13 background-color: #111; /* Black */
14 overflow-x: hidden; /* 禁用水平滾動 */span>
15 padding-top: 20px;
16 }
17 }
18 /* 導航選單的鏈接 */
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'/span>:
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 %}" /span>>
{% csrf_token %}.
<div class="container">
<ul class='list-group'>
<li class='list-group-item active'>{{ form.Trial_balance_Year_to_date }}. 到目前為止的試算表</li>
<li class='list-group-item'>{{ form.tbytd_Include_opening_balances }}試算表年初余額</li> 包括期初余額</li>
<li class='list-group-item'>{{ form.tbytd_Only_use_main_accounts }}只使用主賬戶</li> 只使用主要賬戶</li>。
<li class='list-group-item'>{{ form.tbytd_Print_null_values }}. 列印0.00值</li>。
<li class='list-group-item'>{{ form.tbytd_Print_description }}. 列印描述</li>
<li class='list-group-item'>{{ form.tbytd_Print_account }}. 列印賬戶</li>
<li class='list-group-item'>{{ form.tbytd_Sort_by_account_name }}. 按賬戶名排序</li>
</ul>
<br>
<ul class='list-group'/span>>
<li class='list-group-item active'>{{ form.Trial_balance_Monthly }}. 每月試算表</li>
<li class='list-group-item'>{{ form.tbm_Only_use_main_accounts }} 僅使用主賬戶</li> 只使用主要賬戶</li>。
<li class='list-group-item'>{{ form.tbm_Print_null_values }}. 列印0.00值</li>
<li class='list-group-item'>{{ form.tbm_Print_description }}. 列印描述</li>
<li class='list-group-item'>{{ form.tbm_Print_account }}. 列印賬戶</li>
<li class='list-group-item'>{{ form.tbm_Sort_by_account_name }}列印賬戶</li> 按賬戶名排序</li>
</ul>
</div>
<br>
<br>
<hr>
<div class="btn-update" style="padding-left: 1%" >
<按鈕 type="submit" class='btn btn-primary'> Update< /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'login/home/' , views.home , name = 'home') 。
path('', v.register , name='register') 。
path('' , include('django.contrib.auth.urls') , name = 'login')。
#Trial Balance[/span]。
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[/span]。
path('settings', views.settingsHome , name='settingsHome') 。
path('ns' , views.newSetting , name='newSetting') 。
path('accConnect/setting/<int:settings_pk>', views.viewSettings, name='viewSettings' ) 。
]
我似乎找不到這個問題的癥結所在,我試著去掉表單標簽的 "action "部分,這樣就能顯示出表單,但是當按下 "update "按鈕時,沒有任何東西被保存到資料庫中,而且頁面也沒有按規定重定向。
uj5u.com熱心網友回復:
下面是導致問題的代碼
<form method="POST" action="{% url 'viewSettings' settings.pk %}" /span>>
在你的viewsettings.html模板中,將settings.pk替換為setting.pk
所以你應該有這個 <form method="POST" action="{% url 'viewSettings' setting.pk %}">/code>
在你的views.py中,你在背景關系中把setting作為物件傳遞,但在模板中你使用了settings,因此出現了錯誤
Update
為了檢查是什么原因導致表單不能被提交,你可以這樣做
def viewSettings(request, settings_pk)。
setting = get_object_or_404(SettingsClass, pk=settings_pk)
if request.method == 'GET'/span>:
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})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/323532.html
標籤:
