auth.Group 下的 Django:Profiles 其中 auth.Group 用作应用程序模型中的外键

Django:Profiles under auth.Group where auth.Group is used as foreign key in the app model

我想显示登录用户组下的仪表板,我已经有登录用户信息和该用户的组名 到目前为止我的 views.py 是

def custom_login(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('dashboards')        
    return login(request, 'login.html', authentication_form=LoginForm)

def custom_logout(request):
    return logout(request, next_page='/')

def user(request):
    context = {'user': request.user, 'groups': request.user.groups.all()}
    return render_to_response('registration/dashboards.html', context, context_instance=RequestContext(request))

dashboard.html 就像

{% extends "base.html" %}
{% block content %}
{% if user.is_authenticated %}
    <p>Welcome, {{ request.user.get_username }}. <br/>
    {% else %}
    <p>Welcome, new user. Please log in.</p>
{% endif %}
<ul>
{% for group in groups %}
    <li>
       and you belongs to <strong>{{ group.name }}<strong> -
                {% endfor %}
      </li>
</ul>
{% endblock %}

forms.py长得像

from django import forms
from django.contrib.auth.models import User
from django.forms import ModelForm
#from mhawk.models import Dashboard


class LoginForm(forms.Form):
        username        = forms.CharField(label=(u'User Name'))
        password        = forms.CharField(label=(u'Password'), widget=forms.PasswordInput(render_value=False))
  

我的models.py是

from django.db import models
from django.contrib.auth.models import Group, User
from django.utils import timezone
import datetime

class Dashboard(models.Model):
    d_name = models.CharField(max_length=200)
    d_description = models.CharField(max_length=200)
    d_url = models.CharField(max_length=200)
    d_status = models.CharField(max_length=200)
    owner = models.ForeignKey(Group)
    
    def __str__(self):return self.d_name

并且urls.py是

from django.conf.urls import patterns, include, url
from django.contrib import admin
from drinker import views, models
from django.contrib.auth.models import User

urlpatterns = patterns('',
    
    url(r'^admin/', include(admin.site.urls)),
    url(r'^login/$', 'django.contrib.auth.views.login',),
    url(r'^logout/$', 'django.contrib.auth.views.logout'),
    url(r'^dashboards/$', 'mhawk.views.user'),
)

因为我能够显示登录的用户名,所以我想以同样的方式显示他的组和该组下的仪表板,谢谢。期待帮助。

你能不能不做这样的事情:

def user(request):
    user_groups = request.user.groups.all()
    if request.user.is_anonymous():
        user_groups = []
    user_dashboards = Dashboard.objects.filter(owner__in=user_groups)

    context = {
        'user': request.user,
        'user_groups': user_groups,
        'user_dashboards': user_dashboards,
    }

    [...]

在你的模板中,你需要做这样的事情...

{% extends "base.html" %}
{% block content %}
    {% if user.is_authenticated %}
        <p>Welcome, {{ request.user.get_username }}. <br/>
    {% else %}
        <p>Welcome, new user. Please log in.</p>
    {% endif %}

    <p></p>
    <p>And you belongs to: </p>
    <ul>
        {% for group in user_groups %}
            <li>
                <strong>{{ group.name }}<strong> -
            </li>
        {% endfor %}
    </ul>
{% endblock %}

了解有关 Django 模板的更多信息:

https://docs.djangoproject.com/en/1.7/ref/templates/builtins/#for