django cbv 用户登录判定、URL传值

在CBV的工作方式中 用户登录的判定可以使用一个装饰器
login_required可以使用在view中的某个视图函数上面一行
@login_required
也可以在url页面这样使用
url(r'^savetest$', login_required(savenowtime)),
需要注意的是 用这个装饰器 需要在setting中做配置
LOGIN_URL = '/login/'

如果是类视图,应该多是类视图,可以直接继承LoginRequiredMixin
或者在url中使用login_required也是可以的

url应该是这样的
url('r^ url/$', classname.as_view(),name=' urlname'),
红字处都是需要改的
template中使这样使用的
<a href='{% url ' urlname'%}'></a>
写死在template中是很糟糕的做法 一定要避免

如果你的url需要传值
分为两种情况
固定位置和关键词,在最普通的情况下使用固定位置,在稍复杂的情况下使用关键词
url(r'^ url/(?P<pk>[0-9]+)/$', classname.as_view(), name=' urlname'),
template中的url要这样写
<a href='{% url ' urlname' pk%}'><a/>
这里面的PK是个约定的名字,如果需要修改在类中需要做同样的修改
{%url 'add' %}?a=2&b=3

URL可以通过named group方式传递指定参数,语法为: (?P<name>pattern), name 可以理解为所要传递的参数的名称,pattern代表所要匹配的模式。
例如,
url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
那么year,month将会对应views传递过来的year,month的值,而后面紧跟的则代表正则表达匹配的模式。
下面这个blog说明的很详细

在使用Mixin时传值
class NowTImeMixin(object):

def get_context_data(self, **kwargs):
context = super(NowTImeMixin, self).get_context_data(**kwargs)
context['author'] = Author.objects.all()
context['book'] = Book.objects.all()
context['req] = self.request #这个request可以在这里取到 用来做一些逻辑判断
# 页面中可以直接使用request 不需要上面这句也是可以的
return context
这里注意 这个context为dict,以键值对取值,在分析过各个页面所需的数据之后应该提取其中的共性数据,而共性数据需要做一些筛选的时候在 这个类的def中做逻辑判断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值