无法在Djang中获取上下文数据

2024-10-03 21:34:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用两个实体的自定义用户模型:

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>也不能访问


Tags: 用户selfviewidtruegetreturnmodels
1条回答
网友
1楼 · 发布于 2024-10-03 21:34:17

更改此代码

context['vendor']= Vendor.objects.get(id=self.request.user.id)
context['plainuser']= PlainUser.objects.get(id=self.request.user.id)

对此

^{pr2}$

在return语句中传递上下文数据

return render_to_response('user/vendor_edit_profile.html', self.get_context_data() ,RequestContext(request, c))
return render_to_response('user/user_edit_profile.html', self.get_context_data(), RequestContext(request, c))

相关问题 更多 >