该示例提供了应用程序级视图的代码段,但如果我的"urls.py"文件中包含许多不同(和某些非应用程序)条目(包括模板),该怎么办?如何将这个login_required装饰器应用于每个装饰器?
(r'^foo/(?P<slug>[-\w]+)/$', 'bugs.views.bug_detail'),
(r'^$', 'django.views.generic.simple.direct_to_template', {'template':'homepage.html'}),
Run Code Online (Sandbox Code Playgroud) 我想限制登录用户只有一个活动会话,即如果用户使用新的sessionid登录,则应终止旧会话.我已经在SO上找到了很多帮助: 这里和这里
我实现了中间件解决方案,还有一些额外的检查......
class OnlyOneUserMiddleware(object):
"""
Middleware to ensure that a logged-in user only has one session active.
Will kick out any previous session.
"""
def process_request(self, request):
if request.user.is_authenticated():
try:
cur_session_key = request.user.get_profile().session_key
if cur_session_key and cur_session_key != request.session.session_key:
# Default handling... kick the old session...
Session.objects.get(session_key=cur_session_key).delete()
if not cur_session_key or cur_session_key != request.session.session_key:
p = request.user.get_profile()
p.session_key = request.session.session_key
p.save()
except ObjectDoesNotExist:
pass
Run Code Online (Sandbox Code Playgroud)
到目前为止,这么好......在Django开发服务器(manage.py runserver)上一切正常,它踢旧会话......
...但是当使用Apache(使用mod_wsgi)时,它不起作用!
我试图找到关于此的任何信息,但到目前为止没有运气......
我发现的最接近的是这个,但它是一种"相反"的问题......
任何帮助将非常感激.
编辑:我在删除Session之前添加了一个调试打印...这是Apache的error.log的一个片段:
[Fri Jan 20 09:56:50 …Run Code Online (Sandbox Code Playgroud) 我想为模型添加一个方便/模型方法django.contrib.auth.models.User.这样做的最佳做法是什么,因为上次我检查时,扩展用户模型被认为是不好的做法.
我有一个单独的自定义UserProfile模型.我是否应该将其用于所有与用户相关的便利方法?
从管理员我看到您可以为用户或用户组分配权限,以允许:允许添加,更改或删除模型中的数据.
这很好,但我还需要允许用户或用户组访问或不访问一组视图.我在我的网站上有某种类型的服务,所以我想让一些用户访问某些服务(页面/视图)而不是其他用户.
那么如何允许某些用户/用户组访问某些视图?谢谢!
python django django-authentication django-permissions django-login
我创建了自己的登录视图.但是,如果用户直接访问/ admin,则会将其带到管理员登录页面,并且不会使用我的自定义视图.如何将其重定向到用于/ admin的所有内容的登录视图?
我是python和django的初学者...我想知道如何使用django表单(forms.py)创建登录表单
我需要将auth中的最大用户名大小增加到超过模型中定义的30个字符.怎么做到呢?我不确定只是定制模型是正确或安全的方式.
我为我的django应用启用了登录验证.视图的单元测试无效,因为它们卡在登录页面上.在返回视图的响应并使用后立即设置断点
print response.content
输出包含"请登录"的短语
如何设置用户以便测试用例可以登录?我尝试使用我的用户名和密码,但它在单元测试环境中不起作用.
我在Django中启用了用户auth模块,但是当我使用时,UserCreationForm他只询问用户名和两个密码/密码确认字段.我还想要电子邮件和全名字段,并设置为必填字段.
我这样做了:
from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.models import User
class RegisterForm(UserCreationForm):
email = forms.EmailField(label = "Email")
fullname = forms.CharField(label = "Full name")
class Meta:
model = User
fields = ("username", "fullname", "email", )
Run Code Online (Sandbox Code Playgroud)
现在表单显示新字段但不保存在数据库中.
我该怎么办?
我使用Django auth和默认的管理站点实现了身份验证管理,但后来我想使用自己的AdminSite重写一些行为:
class OptiAdmin(admin.AdminSite):
site_title = "Optimizer site's admin"
#...Other stuff here
Run Code Online (Sandbox Code Playgroud)
然后注册我自己的模型:
admin_site = OptiAdmin(name='opti_admin')
admin.site.register(MyModel, MyModelAdmin)
#Other stuff here
Run Code Online (Sandbox Code Playgroud)
但是当我去管理网站时,我只能看到我刚刚注册的模型,这对我来说听起来不错,但我希望看到这个新的自定义网站中的所有其他应用程序模型,包括auth的用户和组,我不喜欢我不知道如何像默认管理员那样自动执行此操作,请帮助:).
django django-admin django-authentication python-3.4 django-1.8
django ×10
python ×3
django-admin ×2
apache2 ×1
django-1.8 ×1
django-forms ×1
django-login ×1
mod-wsgi ×1
python-3.4 ×1
unit-testing ×1