我有一个带有激活密钥的激活网址( /user/activate/123123123 )。这样做没有任何问题。get_context_data 可以将其很好地放入模板中。我想要做的是将其作为关键字段的初始值,以便用户只需输入注册时创建的用户名和密码。
如何从 context 或 get() 中提取密钥而不将字段硬编码到模板中?
class ActivateView(FormView):
template_name = 'activate.html'
form_class = ActivationForm
#initial={'key': '123123123'} <-- this works, but is useless
success_url = 'profile'
def get_context_data(self, **kwargs):
if 'activation_key' in self.kwargs:
context = super(ActivateView, self).get_context_data(**kwargs)
context['activation_key'] = self.kwargs['activation_key']
"""
This is what I would expect to set the value for me. But it doesn't seem to work.
The above context works fine, but then I would have to manually build the
form in the template which …Run Code Online (Sandbox Code Playgroud) 我有一个扩展/继承AbstractUser的用户模型.我还希望管理员中的用户创建表单匹配,但由于某种原因,我只能让它显示用户名和密码字段.没有其他的.
我发现特别有趣的是,我对admin.py中的这三个字段所做的更改反映在创建表单中,但其他字段从不显示.例如,我可以更改密码1的帮助文本或标签,并在表单中呈现,但其他字段则不会.
此外,如果我设置扩展UserAdmin并注册(如下面的代码所示),我得到一个普通用户的3字段创建视图,但如果我扩展ModelAdmin我得到所有我的字段,但不能使用密码更新形成.它404s.
值得注意的是,进入对象列表的链接是'User',而不是'CommonUser',因为我的模型被调用,但这可能是一个类meta.
admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from models import CommonUser, Account, Registry
from django import forms
class MyUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = CommonUser
class MyUserCreationForm(UserCreationForm):
password = forms.CharField(
label='Password',
max_length = 32,
required=True,
widget=forms.PasswordInput,
)
password2 = forms.CharField(
label='Confirm',
max_length = 32,
required=True,
widget=forms.PasswordInput,
help_text="Make sure they match!",
)
class Meta(UserCreationForm.Meta):
model = CommonUser
fields = ['username', 'password', 'password2', 'email',
'first_name','last_name','address','city','state','zipcode',
'phone1','phone2',]
help_texts = {
'password': 'Must be …Run Code Online (Sandbox Code Playgroud) 当针对非上下文值调用时,模板值标签是否会强制 django 访问数据库?
例如:
{{ request.user.username }}是显示当前登录用户的用户名的调用。但是,类似的东西{{ request.user.someobject_set.all }}会将 FK 遍历的查询集转储到模板中。
用户的someobject设置是否默认转储到上下文中,或者我是否需要在def get_context_data我的视图中使用查询集创建上下文条目?通过扩展,可以通过关联找到任何其他非请求对象?
下面的文档显示了何时在原始 python 中评估查询集,但并未真正提及模板和视图及其关系。
https://docs.djangoproject.com/en/1.6/ref/models/querysets/#when-querysets-are-evaluated