我有一个基本问题请求。获取Django。我在下面给出了表格声明
现在,我需要将v.position传递给下一页。如果我的v.position已填充
,如何验证request.get例如: - 以下代码是否正确?
volpostion = request.GET ['Volunteer Position']。strip()
如果卷积 执行所需的功能。
我读了那个请求。获取表格字段的字典。这里的表格字段是指标签名称吗?
Forms.py
<tr>
<th colspan=4 align="left"><label for="id_Volposition">Volunteer Position:</label></th>
<th colspan=.5 align="left"><a href="/signups/new/{{ v.position }}" class="username" <u>{{ v.volposition }}</u></a></th>
<tr> <td colspan="2" height="2" style="display:none"> </td> </tr>
</tr>
<tr>
<th colspan=4 align="left"><label for="id_roledesc">Role Description:</label></th>
<th colspan=.5 align="left">{{ v.roledesc }}</th>
<tr> <td colspan="2" height="2" style="display:none"> </td> </tr>
</tr>
更多信息:
urls.py
urlpatterns = patterns('',
(r'^new/$', sfp.view),
(r'^volunteer/$', volunteer_page),
(r'^vollist/$', volunteer_list),
(r'^volcont/$', volunteer_contact)
views.py
sfp = SimpleFormProcessing(
form_class=VolunteerSignupForm,
form_2_model=volunteersignupform_2_model,
form2_class=VolunteerForm,
form_template='signups/create_contact_form.dmpl',
email_template='signups/response_email.dmpl',
email_html_template='signups/response_email_html.dmpl',
email_subject='Vibha Volunteer Signup',
email_sender='volunteer@vibha.org',
redirect_url='/signups/thanks/',
do_captcha=True)
SimpleFormProcessing.py
from django.shortcuts import render_to_response
from django.core.mail import EmailMultiAlternatives
from django.template.loader import render_to_string
from django.http import HttpResponseRedirect
from formwrappers import form_with_captcha, form_with_ipaddress
import pdb
class SimpleFormProcessing:
def __init__(self, form_class, form_2_model, form2_class, form_template,
email_template, email_subject, email_sender, redirect_url,
do_captcha=False, record_ip_addr=False, email_html_template=None):
self.form_class = form_class
self.form_2_model = form_2_model
self.form_template = form_template
self.email_template = email_template
self.email_html_template = email_html_template
self.email_subject = email_subject
self.email_sender = email_sender
self.redirect_url = redirect_url
self.do_captcha = do_captcha
self.record_ip_addr = record_ip_addr
def view(self, request, initial={}):
pdb.set_trace()
Form = self.form_class
if self.do_captcha:
Form = form_with_captcha(Form, request)
if self.record_ip_addr:
Form = form_with_ipaddress(Form, request)
if request.method == 'POST':
# Try processing the form
if self.do_captcha and not accepts_cookies(request):
return our_flatpage('Please enable cookies and try again.')
else:
form = Form(request.POST)
if form.is_valid():
# The form is correct, process it
model = self.form_2_model(form)
if self.email_template:
text_content = render_to_string(self.email_template, {'model': model})
recipients = model.emailRecipients()
try:
bcc_recipients = model.emailBCCRecipients()
except:
bcc_recipients = None
msg = EmailMultiAlternatives(self.email_subject, text_content, self.email_sender,
recipients, bcc_recipients)
if self.email_html_template:
html_content = render_to_string(self.email_html_template, {'model': model})
msg.attach_alternative(html_content, "text/html")
msg.send()
return HttpResponseRedirect(self.redirect_url)
else:
# Show the form with errors
return render_to_response(self.form_template, {'form': form})
else:
# Show the empty form
form = Form(initial=initial)
if self.do_captcha:
accepts_cookies(request)
volunteer_list.dmpl
{% extends "base.dmpl" %}
{% block title %}User Registration{% endblock %}
{% block head %}User Registration{% endblock %}
{% block contentBox %}
<h2>Volunteer Opportunities</h2>
<p>Vibha is currently looking for volunteers interested in helping the organization in the following areas:</p>
<div class="relation">
<ul>
{% for k in teamrel %}
<li align="left"><a href="#{{ k }} "> <b> {{ k}} </b> </a> </li>
{% endfor %}
</ul>
</div>
<p>If you are interested in any of these opportunities please contact us by clicking on the position you are interested and filling out the form.</p>
<p> </p>
<table>
{% for v in vollist %}
{% ifchanged v.teamrelation %}
<tr>
<th colspan=7 align="left"><h3><a name="{{ v.teamrelation }}"> {{v.teamrelation}} </a> </h3></th>
</tr>
{% endifchanged %}
<tr>
<th colspan=4 align="left"><label for="id_Volposition">Volunteer Position:</label></th>
<th colspan=.5 align="left"><a href="/signups/new/{{ v.position }}" class="username" <u>{{ v.volposition }}</u></a></th>
<tr> <td colspan="2" height="2" style="display:none"> </td> </tr>
</tr>
<tr>
<th colspan=4 align="left"><label for="id_roledesc">Role Description:</label></th>
<th colspan=.5 align="left">{{ v.roledesc }}</th>
<tr> <td colspan="2" height="2" style="display:none"> </td> </tr>
</tr>
<tr>
<th colspan=4 align="left"><label for="id_timereqt">Time Requirements:</label></th>
<th colspan=.5 align="left">{{ v.noofhours }} hours per month</th>
<tr> <td colspan="2" height="2" style="display:none"> </td> </tr>
</tr>
<tr>
<th colspan=4 align="left"><label for="id_qualreqt">Qualification and Requirements:</label></th>
<th colspan=.5 align="left">{{ v.Qualreqt }}</th>
<tr> <td colspan="2" height="2" style="display:none"> </td> </tr>
</tr>
<tr>
<th colspan=4 align="left"><label for="id_duration">Duration of the Role:</label></th>
<th colspan=20 align="left"> {{ v.Duration}} {{ v.Durationyrmon}}</th>
<tr> <td colspan="10" height="20" style="display:none"> </td> </tr>
</tr>
{% endfor %}
</table>
{% endblock %}
答案 0 :(得分:2)
你的问题很难破译,但从我能做到的,这里有一些指示:
request.GET
和request.POST
字典的键(取决于使用的方法)将是字段的HTML name
属性,而不是其标签。您没有发布包含任何字段的任何代码,但通常情况下,如果您有类似的内容:
<input type="hidden" name="volposition" value="0">
然后,您会找到以下值:
request.POST['volposition']
当您不确定密钥是否存在时,请始终在字典上使用.get()
方法。如果密钥不存在,您拥有的代码将引发IndexError
异常。例如:
volposition = request.GET.get('volposition')
表格实际上应始终通过POST
方法发送。 罕见的异常就像搜索表单一样,将提交的值作为查询字符串更有意义(通常通过GET
方法发送)。经验法则是,如果您要求资源用于只读目的,请使用GET
。例如,搜索Google时,更改任何内容,您只需要搜索搜索结果列表,因此会使用GET
。但是,如果您正在进行任何类型的修改(创建,编辑甚至只更新会话数据......实际影响某种更改的任何内容),那么您使用POST
。你也不应该混淆两者。例如,不要POST
到带有查询字符串的URL。
所有这一切。您应该可以使用以下内容覆盖您的基地:
{% if request.REQUEST.volposition %}
<input type="hidden" name="volposition" value="{{ request.REQUEST.volposition }}">
{% endif %}
request.REQUEST
包含随网址传递的参数,无论是GET
还是POST
。当知道将要发送的方法数据时,请始终使用request.GET
或request.POST
,但在类似这样的情况下,您只需要该值,它可能来自方法,request.REQUEST
是可以接受的。
如果键存在,则隐藏的输入将以其值呈现。无论数据如何发送,volposition
现在都会传递。