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
我想显示登录用户组下的仪表板,我已经有登录用户信息和该用户的组名 到目前为止我的 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