我在默认情况下创建了一些用户,fixtures/initial_data.json以便进行一些测试"主题".我遇到的问题是密码生成.我可以在"字段"中设置密码,但这不会生成哈希密码:
[
{ "model": "auth.user",
"pk": 1,
"fields": {
"username": "user1",
"password": "password"
}
}
]
Run Code Online (Sandbox Code Playgroud)
我需要一种方法来生成用户的密码.我是否必须手动执行此操作并生成{hash_method}${salt}${hashed_password}类似Django 的字符串?
为了在注册用户后对其进行签名,我手动设置了user.backend属性.它通常适用于我的观点.在这个例子中,我试图通过AJAX注册用户.它引发了一个AttributeError.
这是我的代码:
def register_async(request):
if request.method=='POST':
userform=MyUserCreationForm(request.POST)
if userform.is_valid():
#username of <30 char is required by Django User model. I'm storing username as a hash of user email
user=userform.save(commit=False)
user.username=hash(user.email)
user.backend='django.contrib.auth.backends.ModelBackend'
user.save()
auth.login(request,user)
user_status=1
user_fname=user.first_name
user_data=[{'user_status':user_status, 'user_fname':user_fname}]
json_data=json.dumps(user_data)
response=HttpResponse()
response['Content-Type']="text/javascript"
response.write(json_data)
return response
else:
user_data=[{'user_status':"0"}]
json_data=json.dumps(user_data)
response=HttpResponse()
response['Content-Type']="text/javascript"
response.write(json_data)
return response
else:
return HttpResponse()
Run Code Online (Sandbox Code Playgroud)
编辑 - 这里是AJAX.它看起来很漂亮
//ajax registration.
$('input#register_submit').click(function(event){
$(this).attr('disabled','disabled');
$('<div class="register-animation"><img src="{{site}}media/ajax-loader3.gif"/></div>').appendTo('#register_modal_btn');
$.post("/register/", $('div#register_side form').serialize(),
function(data){
$.each(data,function(){
if(this.user_status==1){
$('.register-animation').remove();
$('.right_section .top').html('<ul><li class="sep_nav">Hi, '+ this.user_fname + '</li><li class="sep+nav"><a href="http://nabshack.com/logout/">Log …Run Code Online (Sandbox Code Playgroud) 如果用户未登录,我希望登录表单(来自django.contrib.auth的AuthenticationForm)显示在我站点的每个页面上.当用户登录时,它们将被重定向到同一页面.如果出现错误,则错误将显示在与表单相同的页面上.
我想你需要一个上下文处理器来为每个模板提供表单.但是,那么你还需要每个视图来处理发布的表单吗?这是否意味着您需要创建一些中间件?我有点迷茫.
这是否有可接受的方式?
我有一个带有created_by字段的模型,该字段链接到标准的Django User模型.保存模型时,我需要使用当前用户的ID自动填充它.我不能在Admin层执行此操作,因为站点的大多数部分都不会使用内置的Admin.任何人都可以建议我应该怎么做?
我们有一个Django应用程序,需要特定级别的密码复杂性.我们目前通过客户端JavaScript强制执行此操作,这很容易被适当激励的人击败.
我似乎无法找到有关使用django contrib内置视图设置服务器端密码强度验证的任何具体信息.在我重新发明轮子之前,是否有适当的方法来处理这个要求?
我最初的问题是如何为Django登录页面启用HTTPS,以及唯一的响应,建议我 - 将整个站点设置为仅限HTTPS.
鉴于我正在使用Django 1.3和nginx,那么使网站成为HTTPS的正确方法是什么?
一个回复提到了一个中间件解决方案,但有一点需要注意:
Django在维护POST数据时无法执行SSL重定向.请构建您的视图,以便重定向仅在GET期间发生.
有关nginx重写为https的服务器故障的问题,还提到了POST丢失数据的问题,而且我对nginx不太熟悉,无法确定解决方案的工作情况.
而且EFF建议只使用HTTPS,请注意:
应用程序必须在设置cookie时设置Secure属性.此属性指示浏览器仅通过安全(HTTPS)传输发送cookie,从不安全(HTTP).
像Django-auth这样的应用程序是否能够将cookie设置为安全?或者我是否必须编写更多中间件?
那么,在以下方面,配置Django/nginx组合以实现仅HTTPS的最佳方法是什么?
编辑 - 我在测试多个浏览器时发现的另一个问题.假设我有一个URL https://mysite.com/search/,它有一个搜索表单/按钮.我按一下按钮,程序在Django像往常一样的形式,做一个Django HttpResponseRedirect来http://mysite.com/search?results="foo".https://mysite.com/search?results="foo"根据需要,Nginx将其重定向到.
但是 - 重定向发生时,Opera有一个可见的闪存.它发生在每次搜索,即使是相同的搜索词(我猜https真的不缓存:)更糟糕的是,当我在IE中测试它时,我首先得到的消息:
您将被重定向到不安全的连接 - 继续?
单击"是"后,紧接着是:
您即将通过安全连接查看页面 - 继续吗?
虽然第二个IE警告可以选择关闭它 - 但第一个警告没有,所以每当有人进行搜索并被重定向到结果页面时,它们至少会收到一条警告消息.
从django模板获取用户信息的最佳方法是什么?
例如,如果我只想:
我正在使用django-registration/authentication
我在视图中使用Django进行用户登录:
url(r'^user/login/$', 'django.contrib.auth.views.login', {'template_name': 'users/templates/login.html'}, name='user-login'),
Run Code Online (Sandbox Code Playgroud)
登录后,当我再次转到用户/登录时,我可以第二次登录.我提交表格并获得:
当前网址(accounts/profile /)与其中任何一个都不匹配.
我还没有申报这个网址urls.py.
我做错了什么?为什么框架要重定向到此URL?
我在我的Django应用程序(不是管理员)中有一个表单,允许工作人员从下拉列表中选择用户.
forms.ModelChoiceField(queryset = User.objects.filter(is_staff=False), required = False)
Run Code Online (Sandbox Code Playgroud)
问题是下拉列表按用户名显示用户,而我宁愿从user.get_full_name()显示其全名,并且只有在不可用时才使用用户名.我只是真的需要在这个页面上进行此更改,在管理员等其他地方,我不在乎它是否使用用户名.
有没有办法可以做到这一点?
谢谢!
我一直在为django登录系统收到此错误.这是我的urls.py的一部分:
(r'^contractManagement/login', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),
Run Code Online (Sandbox Code Playgroud)
我得到的确切错误:
Exception Type: NoReverseMatch
Exception Value: Reverse for ''django.contrib.auth.views.login'' with arguments '()' and keyword arguments '{}' not found.
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么我会收到此错误.如果您还需要其他信息,请告诉我.