我在问如何将函数1中定义的带有Python 2.7
和Django 1.10
的变量调用到函数2中。你知道吗
我这样定义了function1
:
def Test(request) :
form = TestForm(request.POST or None)
if form.is_valid() :
instance = form.save(commit=False)
return HttpResponseRedirect('toto')
context = {
"form" : form,
}
return render(request, 'form_Test.html', context)
我想调用我的function2
中的变量instance
:
def Test2(request) :
identity = instance.lastname
context = {
"identity" : identity,
}
return render(request, 'test2_identity.html',context)
我想知道怎么做这个把手?你知道吗
编辑:
我尝试在同一个视图中处理所有的事情,使用预览步骤:
#views.py
def IdentityFormulary(request) :
form = IdentityForm(request.POST or None)
template_name = 'form_Identity.html'
if form.is_valid() :
if '_preview' in request.POST :
post = form.save(commit=False)
template_name = 'preview.html'
#if .is_valid() :
#post=form.save()
elif '_save' in request.POST :
post = form.save()
return HttpResponseRedirect('formulaire_traite')
context = {
"form" : form,
}
return render(request, template_name, context)
def CompletedFormulary(request) :
identity = Identity.objects.all().order_by("-id")[0]
context = {
"identity" : identity,
}
return render(request, 'recapitulatif_identity.html',context)
那个预览.html文件:
<!--preview.html-->
<h2 align="center"> Prévisualisation du formulaire </align> </h2>
{% block content %}
<h3> Récapitulatif des données enregistrées : </h3>
<li> Civilité : {{form.title}}</li>
<li> Nom : {{form.lastname}}</li>
<li> Prénom : {{form.firstname}}</li>
<li> Sexe : {{form.sex}}</li>
<li> Date de Naissance : {{form.birthday}}</li>
<li> Ville de Naissance : {{form.birthcity}}</li>
<li> Pays de Naissance : {{form.birthcountry}}</li>
<li> Nationalité : {{form.nationality}}</li>
<li> Profession : {{form.job}}</li>
<li> Adresse : {{form.adress}}</li>
<li> Ville : {{form.city}}</li>
<li> Code Postal : {{form.zip}}</li>
<li> Pays : {{form.country}}</li>
<li> Email : {{form.mail}}</li>
<li> Téléphone : {{form.phone}}</li>
{% endblock %}
<br></br>
<input type ="submit" name="_save" value="Valider la fiche individuelle" />
我只是用我电脑里的提交按钮阻止预览.html因为就目前而言,这是行不通的
简而言之:你的要求是不可能的,句号。即使是一个全局变量也不起作用,因为没有任何东西可以保证两个请求将由同一个进程提供服务(即使这样,也会有许多其他无法解决的问题)。你知道吗
FWIW这实际上是我们在web开发中大量使用数据库的原因之一—因此我们可以在请求之间保持状态(其中单用户桌面应用程序可以将状态保存在内存中以用于会话)。你知道吗
现在你在评论中提到
如果这就是您希望在两个视图之间共享
instance
的原因,那么这不是方法—您有一个form
,表单确实有验证(这实际上是django.forms
验证用户提交的数据的主要原因),并且您可以hook into the validation process在不同的点执行任何额外的验证。IOW:没有理由尝试在两个视图之间共享一个变量来验证表单。你知道吗编辑:好,现在我们有了XY问题的X部分:
答案是:你不需要两个视图来处理这个案例,你只需要跟踪当前的“步骤”(初始提交/预览/编辑/最终提交),这并不是真正的火箭科学-这很容易用request方法完成(GET代表一个空表单,其他任何东西都要求预览,编辑或最终提交)和提交按钮名称(以确定应执行哪些预览/编辑/最终提交操作)。您可以使用
form.save(commit=False)
获取未保存的实例(用于预览)。你知道吗感谢@brunodesshuilliers:
我的视图.py文件:
我的预览.html文件:
相关问题 更多 >
编程相关推荐