django中的通用视图(类视图),如何获得和设置session?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django中的通用视图(类视图),如何获得和设置session?相关的知识,希望对你有一定的参考价值。
参考技术A HttpSession session = request.getSession();session.getAttribute(“名称”);------得到session放入进去的信息。
session.getAttributeNames()-----得到session里面所有的信息名称。
session.getMaxInactiveInterval()----得到session最大存活时间。
seesion.getId();------得到session的id。比较有用的属性,可以实现共享session。
session.getCreationTime()-----session创建时间。
。。。。。。。。。。。
还有比较多的属性都可以得到session的配置信息。同样,也可以在web.xml文件中通过<session-config>设置session的属性。追问
这不是django,拜托别起哄。
基于通用日期的类视图中的 Django TemplateSyntaxErrors
【中文标题】基于通用日期的类视图中的 Django TemplateSyntaxErrors【英文标题】:Django TemplateSyntaxErrors in generic date based Class views 【发布时间】:2013-04-02 18:52:01 【问题描述】:我正在尝试更新旧的 Django 项目(最后在 Django 1.4 工作)以使用基于类的通用视图(在 Django 1.5 中)
以下曾经工作过
模板:
% block content %
% for month in date_list %
<h2><a href="% url coltrane_entry_archive_month year,month|date:"b" %"> month|date:"F" </a></h2>
<h2>Blah</h2>
% endfor %
% endblock %
urls.py
urlpatterns = patterns('django.views.generic.date_based',
...
(r'^(?P<year>\d4)/$', 'archive_year', dict(entry_info_dict,make_object_list=True), 'coltrane_entry_archive_year'),
(r'^(?P<year>\d4)/(?P<month>\w3)/$', 'archive_month', entry_info_dict, 'coltrane_entry_archive_month'),
...
)
但是当我更新 urls.py 以使用泛型类时
class ArticleYearArchiveView(YearArchiveView):
queryset = Entry.objects.all()
date_field = "pub_date"
make_object_list = True
allow_future = True
urlpatterns = patterns('',
...
url(
r'^(?P<year>\d4)/$',
ArticleYearArchiveView.as_view(),
name='coltrane_entry_archive_year'
),
url(
r'^(?P<year>\d4)/(?P<month>\w3)/$',
dates.MonthArchiveView.as_view(
template_name='coltrane/entry_archive_month.html',
queryset=Entry.objects.filter(status=Entry.LIVE_STATUS),
date_field='pub_date'),
name="coltrane_entry_archive_month"
),
...
)
以下 TemplateSyntaxError 开始出现:
无法解析某些字符:year|,month||date:"b"
我可以使用以下方法渲染模板并检查传递给 coltrane_entry_archive_month 的内容:
% for month in date_list %
year
month|date:"b"
% endfor %
我确实注意到 year 被呈现为 'Jan. 1, 2013' 而不是 '2013' 匹配 url 中的正则表达式。这个我不明白。
然后我尝试渲染以下内容:
% for month in date_list %
% url "coltrane_entry_archive_month" "2013","apr" %
% endfor %
不高兴,这次 TemplateSyntaxError 是:
无法解析余数:',"apr"' from '"2013","apr"'
通用类视图和 url 在 Django 中似乎都是较大的主题,所以任何指针都会非常受欢迎!
【问题讨论】:
"% url coltrane_entry_archive_month year,month|date:"b" %"
应该是'% url coltrane_entry_archive_month year month|date:"b" %'
karthikr - 谢谢。我已经接受了下面的答案,但在这里感谢您的 cmets 和解决方案。
【参考方案1】:
url 标签不接受逗号分隔的参数,只需用空格列出即可。
% for month in date_list %
% url "coltrane_entry_archive_month" "2013" "apr" %
% endfor %
这意味着您需要将实际模板更改为
% url "coltrane_entry_archive_month" year month|date:"b" %
也只是一个注释(我注意到您在第二个示例中遵循了该注释)
不要忘记在函数路径或模式名称周围加上引号!
Django 1.5 中的更改:第一个参数以前不被引用, 这与其他模板标签不一致。从 Django 1.5 开始,它 根据通常的规则进行评估:它可以是带引号的字符串 或将在上下文中查找的变量。
【讨论】:
嘿,这不是我第一次被逗号难住了...感谢您的回答,这确实有效。一个有争议的问题,但我必须将 year 更改为 month|date:"Y" 以适应 url 模式 - 否则我会收到 NoReverseMatch 错误。我不知道为什么它不像以前那样渲染。 刚刚注意到您发布到模板标签中内置 url 的链接 - 太好了,我没能在帮助中找到它。 如果输出为Jan. 1, 2013
,它看起来像是作为日期传递的,因此使用日期过滤器应该没问题。至于为什么会这样,我也不知道……
是的,我也在模板循环之外使用了 year 变量,并且刚刚尝试了日期过滤器,效果很好。以上是关于django中的通用视图(类视图),如何获得和设置session?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 通用列表视图类中使用 slugfield 创建链接?