我正在添加一个系统,为下次登录时可以显示的用户留下"通知".我在models.py文件中创建了一个简单的Notification类.我有这个UserInfo类(在相同的models.py中)作为socialauth的一部分将一些属性添加到Django的现有用户系统:
class UserInfo(models.Model):
user = models.OneToOneField(User, unique=True)
...
reputation = models.IntegerField(null=True, blank=True)
def add_notification(message):
notification = Notification(user=self.user, message=message)
notification.save
Run Code Online (Sandbox Code Playgroud)
当我在控制台中尝试时,我最终得到了这个:
>>> user = User.objects.get(id=14)
>>> user.userinfo.add_notification('you are an awesome intern!')
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: add_notification() takes exactly 1 argument (2 given)
>>>
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?我是一个Django noob,所以也许这很简单.谢谢!
我想使用Django Simple Captcha在我的django注册表单上添加验证码 :http://code.google.com/p/django-simple-captcha/
如果您创建一个新表单但是我正在使用django附带的django.contrib.auth.forms,那么这很有用.知道如何使用现有的django auth视图实现验证码吗?谢谢!
对于我的网站,几乎每个页面都有一个标题栏显示"欢迎,ABC",其中"ABC"是用户名.这意味着request.user将为每一个请求调用,导致数据库一次又一次地命中.
但是一旦用户登录,我应该能够将他的user实例存储在他的cookie中并加密它.这样我可以避免重复访问数据库,而只是request.user从cookie中检索.
你会如何修改Django来做到这一点?是否有任何Django插件可以满足我的需求?
谢谢
使用Django-auth应用程序(Django版本1.3),我想让我的登录页面转到https://mysite.com/login/.目前,我正在使用:
# urls.py
from django.contrib.auth.views import login
urlpatterns = patterns('', url(r'^login/$', login, name='login-view'),)
# navbar.html
<li id="nav-login"><a href="{% url login-view %}" ><b>Login</b></a></li>
Run Code Online (Sandbox Code Playgroud)
这很好用,但去了http://mysite.com/login/.
有什么方法可以告诉Django-auth在反转视图名称时使用什么前缀(https)?我已经阅读了整个手册页,但没有找到任何涵盖它的内容.或者也许某种方式告诉url标签转到https?
或者是手动指定整个URL的唯一选项?我希望不是:)鉴于Django到目前为止有多强大,我无法相信它不具备这种能力 - 我必须忽视它.:)
我正在尝试让django密码重置工作,但重置电子邮件不会被发送.
我知道我的电子邮件配置正确,因为以下内容适用于shell和我的一个视图(我用它来获取支持电子邮件给自己).
from django.core.mail import send_mail
send_mail('Subject here', 'Here is the message.',
'admin@mydomain.com',['me@gmail.com'], fail_silently=False)
Run Code Online (Sandbox Code Playgroud)
我可以进入我的重置密码视图(密码/重置/),在我给它我的电子邮件后,它正确地重定向到密码/重置/完成/但它不发送电子邮件.
这是我的urls.py:
(r'^password/reset/$','django.contrib.auth.views.password_reset'),
(r'^password/reset/done/$','django.contrib.auth.views.password_reset_done'),
(r'^password/reset/confirm/$','django.contrib.auth.views.password_reset_confirm'),
(r'^password/reset/complete/$','django.contrib.auth.views.password_reset_confirm'),
(r'^password/change/$','django.contrib.auth.views.password_change'),
(r'^password/change/done/$','django.contrib.auth.views.password_change_done'),
Run Code Online (Sandbox Code Playgroud)
这是我的password_reset_form.html:
<html>
<head>
<link rel="stylesheet" type="text/css" href="/media/css/style_login.css" />
<title>Información de acceso requerida</title>
</head>
<body>
<div id="wrapper">
<h1>Recuperar password</h1>
<p>Utilice este formulario cuando desee recuperar el password para su usuario.</p>
{% if form.errors %}
<p>No hay un usuario registrado con ese correo electronico.</p>
{% endif %}
<form method="post" action="{% url django.contrib.auth.views.password_reset_done …Run Code Online (Sandbox Code Playgroud) 我正在试图找出如何从中排除用户名和/或密码的方法UserChangeForm.我试过了两个exclude,fields但我不适用于这两个领域.
这是一些代码:
class ArtistForm(ModelForm):
class Meta:
model = Artist
exclude = ('user',)
class UserForm(UserChangeForm):
class Meta:
model = User
fields = (
'first_name',
'last_name',
'email',
)
exclude = ('username','password',)
def __init__(self, *args, **kwargs):
self.helper = FormHelper
self.helper.form_tag = False
super(UserForm, self).__init__(*args, **kwargs)
artist_kwargs = kwargs.copy()
if kwargs.has_key('instance'):
self.artist = kwargs['instance'].artist
artist_kwargs['instance'] = self.artist
self.artist_form = ArtistForm(*args, **artist_kwargs)
self.fields.update(self.artist_form.fields)
self.initial.update(self.artist_form.initial)
def clean(self):
cleaned_data = super(UserForm, self).clean()
self.errors.update(self.artist_form.errors)
return cleaned_data
def save(self, commit=True):
self.artist_form.save(commit)
return super(UserForm, …Run Code Online (Sandbox Code Playgroud) 我有一个来自django的数据库,我想从Node.js使用它.我有一个任务:验证用户身份.从数据库中已知:算法pbkdf2_sha256,salt,10000次迭代和base64编码的哈希.我必须在JS中执行哪些步骤来将某些密码编码为给定的base64-hash?
UPD:在这里找到解决方案:python(django)hashlib vs Nodejs crypto 但是Django生成的hash和JS生成的hash不匹配...
Django生成下一个:
pbkdf2_sha256$10000$NmzpPCQiTe2R$U8ipSsOy3Xz7FwWDHdH/dTei8Xh4Q7NGtdzrCacSfvo=
Run Code Online (Sandbox Code Playgroud)
JS:
pbkdf2_sha256$10000$NmzpPCQiTe2R$w4jCgWjDilrDmcOBd8K+I8OdwpkKwoVQZMKWH3FvYcKoAMKcwqlewobDocOEGMKZfQ==
Run Code Online (Sandbox Code Playgroud)
密码: Simple123
我正在使用Django 1.6开发一个Web应用程序,我要求用户使用我的登录表单登录.我想编写一个测试用例来测试登录用户的过程.
我确实成功获得了一个工作登录页面,这意味着我能够登录.以下步骤解释了我的设置.但是,为此过程编写测试用例确实失败了.在这一点上,我既不能在测试中发现错误,也不确定这种方法是否有意义.有人能帮我吗?
更新:在此期间我注意到,我的表单错误消息太不明确了.该问题似乎是由表单字段验证步骤失败的空表单字段引起的.当我将错误添加{{ form.errors }}到模板时,响应包含以下内容(格式不太好):
<ul class="errorlist">
<li>username
<ul class="errorlist">
<li>This field is required.</li>
</ul>
</li>
<li>password
<ul class="errorlist">
<li>This field is required.</li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我仍然不确定如何最合理地测试这个程序.我是Django的新手,也是它测试框架的哲学.可能是,这个问题不直接落入Django测试框架的范围,在这个框架中,模型,视图和表单(看似)是相互分离的(看似)?这个测试是否属于独立测试套件进行黑盒/功能测试的领域,例如,使用Selenium?
我开始是这样的:
开始了一个新项目,如下所示:
django-admin.py startproject login_test
Run Code Online (Sandbox Code Playgroud)添加了一个条目login_test/urls.py,像这样:
urlpatterns = patterns('',
url(r'^login/$', 'django.contrib.auth.views.login'),
url(r'^admin/', include(admin.site.urls)),
)
Run Code Online (Sandbox Code Playgroud)制作模板/home/moooeeeep/login_test/templates/registration/login.html,如下:
{% if form.errors %}
<p>Your username and password didn't match. Please try again.</p>
{% endif %}
{% if not user.is_active %}
<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
{% csrf_token %} …Run Code Online (Sandbox Code Playgroud)django validation django-forms django-authentication django-testing
使用django generic CreateView我可以创建一个新的用户帐户,但是如何在注册后使用这种技术自动登录该用户?
urls.py
...
url( r'^signup/$', SignUpView.as_view(), name = 'user_signup' ),
...
Run Code Online (Sandbox Code Playgroud)
views.py
class SignUpView ( CreateView ) :
form_class = AccountCreationForm
template_name = 'accounts/signup.html'
success_url = reverse_lazy( 'home' )
Run Code Online (Sandbox Code Playgroud)
forms.py
class AccountCreationForm ( forms.ModelForm ) :
def __init__( self, *args, **kwargs ) :
super( AccountCreationForm, self ).__init__( *args, **kwargs )
for field in self.fields :
self.fields[field].widget.attrs['class'] = 'form-control'
password1 = forms.CharField( label = 'Password', widget = forms.PasswordInput )
password2 = forms.CharField( label = 'Password confirmation', widget = forms.PasswordInput …Run Code Online (Sandbox Code Playgroud) if not request.user.is_authenticated:
return None
try:
return ClientProfile.objects.get(user=request.user)
except ClientProfile.DoesNotExist:
return None
Run Code Online (Sandbox Code Playgroud)
如果我没有登录并尝试调用它,则此代码应返回None.但正如我从stacktrace中看到的那样,崩溃时出现错误"'AnonymousUser'对象不可迭代"在这一行:
return ClientProfile.objects.get(user=request.user)
Run Code Online (Sandbox Code Playgroud)
我正在以私人模式浏览以下页面,因此我100%未经过身份验证.
如何解决这个问题?
django ×7
django-forms ×4
django-users ×1
django-views ×1
email ×1
https ×1
javascript ×1
pbkdf2 ×1
python ×1
sha256 ×1
validation ×1