我想创建一个没有登录的用户子集......基本上是一种将摄影师字段添加到照片而不需要与该人关联的完整帐户的方法(因为在很多情况下,他们会从未真正登录过该网站).需要注意的是,我还希望以后能够为他们启用帐户.
所以,我认为这个问题变成了设置一个与User表关联的"People"表的最佳方法,而没有用UserProfile实际扩展User表.
我正在考虑用于登录(新/旧)用户的第三方认证系统.就像StackOverflow如何验证它的用户一样.这个方案很好,因为它让我无需进行身份验证.我需要这个 -
似乎有一些Django应用程序声称可以解决这个问题.哪些好?防爆.Django-SocialAuth,django-openid-auth
我有一个视图,允许使用ajax请求动态添加标签.它看起来像这样:
@require_POST
@login_required
def addtag(request):
"""
a view to create a new tag in the tag database
"""
some logic here
Run Code Online (Sandbox Code Playgroud)
这就是我的url.py看起来像:
urlpatterns = patterns('',
url(r'^addtag/$',addtag, name='addtag'),
)
Run Code Online (Sandbox Code Playgroud)
我的测试是这样做的:
def test_addtag(self):
url='^addtag/$'
response = self.client.post(url,{'addtag':'"new tag"'})
self.assertEqual(response.status_code,401)
Run Code Online (Sandbox Code Playgroud)
我希望返回的状态代码是401,因为testclient没有登录.所以第一个装饰器,检查请求是否是一个帖子正在愉快地传递.然后我希望login_required装饰器返回401,但它没有:
AssertionError: 302 != 401
Run Code Online (Sandbox Code Playgroud)
首先我认为login_required装饰器将重定向到某个登录页面.检查一下,我没有settings.LOGIN_REDIRECT_URL指定.那么login_required在这种情况下做了什么?
我有一个自定义模型,我正在尝试进行身份验证:
class User(models.Model):
#id = models.IntegerField(primary_key=True)
#identifier = models.CharField(max_length=40, unique=True, db_index=True)
username = models.CharField(max_length=90, unique=True, db_index=True)
create_time = models.DateTimeField(null=True, blank=True)
update_time = models.DateTimeField(null=True, blank=True)
email = models.CharField(max_length=225)
password = models.CharField(max_length=120)
external = models.IntegerField(null=True, blank=True)
deleted = models.IntegerField(null=True, blank=True)
purged = models.IntegerField(null=True, blank=True)
form_values_id = models.IntegerField(null=True, blank=True)
disk_usage = models.DecimalField(null=True, max_digits=16, decimal_places=0, blank=True)
#last_login = models.DateTimeField()
objects = UserManager()
USERNAME_FIELD = 'username'
#check_password(password)
class Meta:
db_table = u'galaxy_user'
Run Code Online (Sandbox Code Playgroud)
我在`设置中已经提到了这个.
AUTH_USER_MODEL ='fileupload.user'
#views.py
def login_backend(request):
if request.method == 'POST':
username = request.POST['username'] …Run Code Online (Sandbox Code Playgroud) 环境:Django 1.5.1 + Django CMS 2.4.1 + Zinnia最新+我的自定义应用+自定义Django CMS插件
基本上我可以扩展默认的Django(1.5.X)用户模型,如NetTuts +上的Django Ribbit Tutorial
要么
在段落中替换完全自定义的模型,如Django Dev doc或Django2Scoops示例:"处理用户模型"
为了测试我决定使用子类AbstractUser来自Django2Scoops书:"如果您喜欢Django的用户模型字段,请选择此选项,但需要额外的..fields."
但是我有以下错误:
notification.noticesetting:'user'定义了与模型'auth.User'的关系,该模型已被换出.更新关系以指向settings.AUTH_USER_MODEL.cmsplugin_zinnia.latestentriesplugin:'authors'定义了与模型'auth.User'的关系,该模型已被换出.更新关系以指向settings.AUTH_USER_MODEL.
cms.pageuser:'created_by'定义了与模型'auth.User'的关系,该模型已被换出.更新关系以指向settings.AUTH_USER_MODEL.cms.pageusergroup:'created_by'定义了与模型'auth.User'的关系,该模型已被换出.更新关系以指向settings.AUTH_USER_MODEL.
经过几个小时的阅读和测试,我找到了
正如错误消息所示 - 您需要更新关系以指向settings.AUTH_USER_MODEL.第二个错误("模型已被换出......")是您直接引用用户模型这一事实的副作用.更改ForieignKey引用后,第三个错误将消失.我们已尽力确保顺利过渡到新的用户模型,但它不能完全透明.应用编写者需要将他们的应用更新为1.5兼容.基本上,如果Django 1.4应用程序包含对用户的硬编码外键引用,则它与Django 1.5不会100%兼容.拜托,你能举个更多例子吗?
和Django/Python:更新关系以指向settings.AUTH_USER_MODEL
在settings_example.py中,您有AUTH_USER_MODEL ='users.User'.但是你使用的应用程序 - menu.bookmark--与django.contrib.auth.User有关 - 你不能同时拥有这两者.设置AUTH_USER_MODEL意味着您要用自己的内置Django用户模型替换它.有关 详细信息,请参见 http://procrastinatingdev.com/django/using-configurable-user-models-in-django-1-5/.
但我不明白我该怎么解决这个问题.
我需要什么:
- 用户与学院班级(一个学院 - >更多用户)相关联
- 用户或机构可以拥有不同的权限,并查看不同的django cms页面/插件.
- 用户的几个字段.
Subclass AbstractUser是正确的吗?
如何解决"换出"错误?
我应该创建类似于OpenTreeMap代码的东西
这个代码是不是已经弃用了?
谢谢!
django django-models django-authentication django-cms django-users
我有一个login_page函数,在这个函数中,authenticate()函数只有在超级用户时才返回用户对象.对于普通用户,它返回None.这不是文档所说的那样.
def login_page(request):
if request.user.is_authenticated(): # if user is already logged in
return HttpResponseRedirect('/') # SHOULD BE DASHBOARD
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
seo_specialist = authenticate(username=username, password=password) #returns None
if seo_specialist is not None:
login(request, seo_specialist)
return HttpResponseRedirect('/') # SHOULD BE DASHBOARD
else:
return render(request, 'login.html', {'form': form})
else:
return render(request, 'login.html', {'form': form})
else:
form = LoginForm()
context = {'form': form}
return render(request, 'login.html', context)
Run Code Online (Sandbox Code Playgroud)
我的代码有什么问题吗?
我正在尝试使用其他字段和功能来扩展默认的Django的身份验证模型,因此我决定继续扩展用户模型并编写自己的身份验证后端.
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User
class MyUser(User):
access_key = models.CharField(_('Acces Key'), max_length=64)
Run Code Online (Sandbox Code Playgroud)
这是一个基本的代码,但在尝试syncdb时,我正在考虑一个谷歌不知道的奇怪错误:
CommandError: One or more models did not validate:
core.sldcuser: 'user_ptr' defines a relation with the model 'auth.User', which has been swapped out. Update the relation to point at settings.AUTH_USER_MODEL.
在我的settings.py中,我添加了我想要的内容:
AUTH_USER_MODEL = 'core.MyUser'
Run Code Online (Sandbox Code Playgroud)
有没有人偶然发现这个错误?
或者也许我应该使用一对一的方式,或1t1与代理的混合?
我正在使用django-axes来限制对admin后端的登录尝试.但是,对于我的前端客户端通过django-allauth登录,我找不到任何机制来检测和防止登录失败.
使用allauth防止多次失败登录尝试的最佳方法是什么?有推荐的解决方案吗?我不太热衷于阻止来自特定IP的尝试,但是防止对单个用户名的多次尝试即"管理员"是好的.
提前致谢,
所以我使用Django(1.7和postgres)Rest Api(Django REST框架3.0.2)进行基本身份验证,为我的移动测试应用注册和验证用户.问题是我通过管理面板创建的用户将其密码加密,但是当我创建用户时,将rest-framework用于相同的"User"(默认)数据库时,密码不会被加密.这导致了我们几个问题(尤其是验证用户从api-token-auth获取令牌).有什么我可以做的吗?也许在设置中的东西?(我们也在我们的服务器上运行gunicorn和ngnix).非常感谢!
django rest basic-authentication django-authentication django-rest-framework
我有一个项目部署到使用Django 1.8的服务器,其中新用户的创建导致此错误:
列"last_login"中的空值违反非空约束
这似乎是由几个月前解决的已知错误引起的.
我需要做些什么才能获得修复?或者是否应该以其他方式处理此问题?