[英]Getting username of logged in user in django
I am new to Django and I just want to find a way to get the username of a logged in user and use it to get the boards of the user. 我是Django的新手,我只想找到一种方法来获取登录用户的用户名,并使用它来获取用户的董事会。 I may have done the models wrong by adding another user model but I would like some help in getting the user's username.
我可能通过添加其他用户模型来做错了模型,但是在获取用户名时我需要一些帮助。 Here is my views file:
这是我的意见档案:
from django.shortcuts import render
from django.urls import reverse
from django.http import HttpResponseRedirect
from django.contrib.auth import authenticate,login
from django.contrib.auth.models import User
from .models import board_member,user
# Create your views here.
def index(request):
# Login form submitted?
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
if username and password:
user = authenticate(username=username, password=password)
# Login succeeded
if user is not None:
login(request, user)
return HttpResponseRedirect(reverse('login_success'))
# Login failed
return HttpResponseRedirect(reverse('login_fail'))
return render(request, 'Boards/login.html')
def login_success(request):
return render(request, 'Boards/Homepage.html')
def getboards(request):
username = request.user.get_username()
boards = []
for Memberships in board_member.objects.all():
if username == Memberships.user.username:
boards.append(Memberships.board)
return render(request, 'Boards/Homepage.html', {'boards': boards, 'username':username})
def login_fail(request):
return render(request, 'login_fail.html')
and this is my models file: 这是我的模型文件:
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class board(models.Model):
name = models.CharField(max_length=20)
def __str__(self):
return (self.name)
class user(models.Model):
username = models.CharField(max_length=20)
password = models.CharField(max_length=20)
boards = models.ManyToManyField(
board, through='board_member', related_name="members")
def __str__(self):
return(self.username)
class list(models.Model):
title = models.CharField(max_length=20)
board = models.ForeignKey(
board, related_name="lists", on_delete=models.CASCADE)
class board_member(models.Model):
user = models.ForeignKey(
user, related_name="memberships", on_delete=models.CASCADE)
board = models.ForeignKey(
board, related_name="memberships", on_delete=models.CASCADE)
access = models.CharField(max_length=20)
def __str__(self):
return ("%s is %s in board %s" % (self.user, self.access, self.board))
class card(models.Model):
list = models.ForeignKey(list, related_name="cards",
on_delete=models.CASCADE)
text = models.CharField(max_length=100)
date = models.DateField(auto_now=True)
due = models.DateField()
flag = models.CharField(max_length=20)
Normally to get the username of logged in user you do 通常,要获取登录用户的用户名,您需要执行
username = request.user.username.
within the view itself. 在视图本身中。
However I am not sure why you created another user model. 但是我不确定为什么要创建另一个用户模型。 I guess you are trying to extend the existing auth user model.
我猜您正在尝试扩展现有的auth用户模型。
First you need to implement django custom user model and add extra field boards
. 首先,您需要实现django自定义用户模型并添加额外的现场
boards
。
After in views you can get all boards like 在查看后,您可以像
request.user.boards.all()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.