我正在用django 1.7构建我的第一个站点,我很难弄清楚如何将变量从单击传递到视图。我的GET也是空的。
我的模板有一个Facebook帐户ID表,点击时应显示用户管理员的Facebook页面列表。
我的模板:
{% for SocialAccount in accountlist %}
<tr>
<td><a href="{% url 'INI:fbpages' %}">{{ SocialAccount.uid }}</a></td>
<td>{{ SocialAccount.extra_data.first_name }}</td>
<td>{{ SocialAccount.extra_data.last_name }}</td>
<td>{{ SocialAccount.extra_data.email }}</td>
</tr>
{% endfor %}
我的观点:
def fbpages(request, fbuser):
djuser = request.user.id
context = RequestContext(request)
fbuser = 1234634
pagelist = facebook.pages(request, djuser, fbuser)
blocks = {'title': 'Facebook Pages',
'pagelist': pagelist}
return render(request, "initiative/ListFBPages.html", blocks)
我可以很容易地做到这一点,如果我把ID的网址,但我不想暴露一个页面/用户ID的网址。我觉得有一个简单的解决方案,但我还没有想通。
谢谢你的帮助。
3条答案
按热度按时间ubof19bj1#
你只能用4种不同的方法从模板发送数据到Django视图。在你的情况下,如果你不想在URL中包含信息,你可能只能使用选项1和4。
1.发布
因此,您将提交一个具有值的表单。
2.查询参数
您将传递
//localhost:8000/?id=123
。3.从URL(例如,请参阅此处)
你会传递
//localhost:8000/12/results/
。在您看来:
4. Session (via cookie)
使用session的缺点是你必须将它传递给视图或者在更早的时候设置它。
px9o7tmv2#
为了补充JJK的答案,下面是使用表单将变量从模板传递到视图的详细方法。
模板:
上面,'INI:fbpages'是在www.example.com中定义的url模式名称urls.py
uid是要传递给视图的变量。
请注意,在django模板中变量渲染中使用的双花括号在这里没有使用。
查看:
此变量可以作为fbuser命令参数在视图中直接访问
uz75evzq3#
我们也这样使用: