我使用两个实体的自定义用户模型:
class WeddyUser(AbstractBaseUser):
username = models.CharField(
'Юзернейм',
max_length=50,
unique=True,
db_index=True
)
email = models.EmailField(
'Электронная почта',
max_length=255,
blank=True,
null=True
)
is_vendor = models.BooleanField(
'Волшебник',
default=False
)
#other atributes and methodes
此类由其他两种用户类型继承:
^{pr2}$以及
class PlainUser(WeddyUser):
date_of_birth = models.DateField('Дата рождения', null=True, blank=True)
favor_news = models.ManyToManyField('news.News', blank=True)
favor_pic = models.ManyToManyField('news.Photo', blank=True)
我尝试为这类用户建立个人区域:
在URL中:
url(r'^desktop/$', views.DesktopView.as_view(), name='desktop'),
在模板中:
"{% url 'desktop' %}"
观点:
class LoginRequiredMixin(object):
@classmethod
def as_view(cls, **initkwargs):
view = super(LoginRequiredMixin, cls).as_view(**initkwargs)
return login_required(view)
class DesktopView(LoginRequiredMixin,DetailView):
model = WeddyUser
context_object_name = 'weddyuser'
def get_context_data(self, **kwargs):
context = super(DesktopView, self).get_context_data(**kwargs)
if self.request.user.is_vendor:
context['vendor']= Vendor.objects.get(id=self.request.user.id)
context['plainuser']= PlainUser.objects.get(id=self.request.user.id)
return context
def get(self, request, *args, **kwargs):
c = {}
c.update(csrf(request))
user = request.user
if user.is_vendor:
return render_to_response('user/vendor_edit_profile.html', RequestContext(request, c))
return render_to_response('user/user_edit_profile.html', RequestContext(request, c))
{{cd2>也不能访问
更改此代码
对此
^{pr2}$在return语句中传递上下文数据
相关问题 更多 >
编程相关推荐