我是刚到Django的,这只是对下一代车型的测试。我正试着给你一张表格通用.FormView至通用.DetailView,并将上一个HTML(与FormView关联)中插入的数据展示给另一个HTML(与DetailView关联)。我想这可能是因为视图.py以及网址.py. 代码为:
你知道吗视图.py地址:
class IndexView(generic.FormView):
template_name = 'dutos/index.html'
form_class = GetDate
success_url = 'dutos/detail.html'
#def form_valid(self, form):
#return HttpResponse(self.success_url)
#return super.form_valid(form)
class DetailView(generic.DetailView):
model = Dutos
template_name = 'dutos/detail.html'
你知道吗表单.py你知道吗
class GetDate(forms.Form):
dateDataInicial = forms.DateTimeField(label='dataInicial', initial=datetime.now().strftime("%d/%m/%Y %H:%M:%S"), required=False)
dateDataFinal = forms.DateTimeField(label='dataFinal', initial=datetime.now().strftime("%d/%m/%Y %H:%M:%S"), required=False)
你知道吗网址.py地址:
from django.urls import path
from .views import views
urlpatterns = [
path('', views.IndexView.as_view(), name="index"),
path('detail/', views.DetailView.as_view(), name="detail"),
]
你知道吗索引.html地址:
<!DOCTYPE html>
<html>
<head>
<title>Template</title>
</head>
<body>
<h1>Teste HTML</h1>
<div class="container-fluid" id="wrapper">
<div class="row">
<form action="/detail/" method="post">
{% csrf_token %}
{{ form.non_field_errors }}
<div>
<div class="fieldWrapper">
{{ form.dateDataInicial.errors }}
<label for="{{ form.dateDataInicial }} Data Inicial: </label>
{{ form.dateDataInicial }}
</div>
<div class="fieldWrapper">
{{ form.dateDataFinal.errors }}
<label for="{{ form.dateDataFinal }} Data Final: </label>
{{ form.dateDataFinal }}
</div>
<input type="submit" value="Pesquisar">
</div>
</form>
</div>
</div>
</body>
</html>
你知道吗详细信息.html地址:
<!DOCTYPE html>
<html>
<head>
<title>Template</title>
</head>
<body>
<h1>Template HTML</h1>
{{form.cleaned_data['dateDataInicial']}}
{{form.cleaned_data['dateDataFinal']}}
</body>
</html>
我已经换了”{{form.u数据['dateDataInicial']}}“到”表单.dateDataInicial,或者只是清理了所有内容,并将“Test”放在simples HTML中。我收到HTTP错误405。你知道吗
多亏了Daniel和他的代码的帮助,我找到了导致我需要的修改。我已将DetailView的genericView更改为“通用.DetailView“至”通用.ListView". 当它被制造出来时,另一个问题出现了。为了通过JSON传递“datetime”,它将转换为字符串格式,并且所有日期都被视为字符串,因此我无法在中的单独字段中显示这两个日期详细信息.html. 为了克服这个问题,我修改了Daniel提出的解决方案,并将字段一分为二,这样就可以通过form.u数据并将其转换为字符串,现在我不需要担心JSON序列化“datetime”。你知道吗
你知道吗视图.py地址:
你知道吗索引.html地址:
你知道吗详细信息.html地址:
你发布的代码确实有很多错误。你知道吗
得到405是因为索引模板中的表单试图直接发布到详细信息URL,而该URL未设置为接受post请求。这样做的另一个问题是表单不会被验证,因为验证应该在IndexView中进行,而不是在DetailView中。另外,DetailView对表单一无所知,因此
form.cleaned_data
将不存在于模板上下文中;而且Django模板语法不支持通过方括号进行字典查找,因此{{ form.cleaned_data['dateDataInicial'] }}
将不起作用。你知道吗为了使验证生效,您需要将表单提交回IndexView,然后IndexView将重定向到detail视图。(代码的另一个问题是success\u url应该是一个url,而不是模板路径。)然后问题就变成了如何从一个视图到另一个视图获取数据;会话是一种很好的方法。所以:
在中更改窗体标记索引.html地址:
局部视图:
而且在详细信息.html地址:
相关问题 更多 >
编程相关推荐