Как получить указанные c данные о пользователях из базы данных на панели инструментов после входа в систему django? - PullRequest
0 голосов
/ 16 января 2020

У меня есть страница регистрации, входа в систему и панели инструментов, форма регистрации состоит из имени пользователя, адреса электронной почты, пароля, цели, дизайна, мебели, комнаты, поэтому в них имя пользователя, электронная почта будут сохранены в пользовательской модели пользователя и оставшихся деталях. будет храниться в таблице user_requirement, а страница входа состоит из имени пользователя и пароля, которые будут аутентифицированы и теперь попадут на страницу панели инструментов. На странице панели инструментов я пытаюсь отобразить цель, дизайн, мебель, детали комнаты, которые конкретный пользователь дал во время регистрация My views.py:

from django.shortcuts import render, redirect
from django.contrib import messages, auth
from django.contrib.auth.models import User
from contacts.models import Contact
from django.shortcuts import render,HttpResponseRedirect
from django.contrib import messages,auth
from account.forms import UserForm
from account.forms import UserRequirementForm
from django.contrib.auth import authenticate, login


def register(request):
  return render(request, 'account/register.html',);
def user_register(request):
    if request.method == 'POST': # if there is a post request in the form
        user_form = UserForm(data=request.POST) #first of all it is a user_form will be posted details present in the user_form
        user_requirement_form = UserRequirementForm(data=request.POST)# after posting the details of the user_form post the details
        if user_form.is_valid() and user_requirement_form.is_valid():
         # if user_form & user_requirement form is valid

         User = user_form.save()#if form is valid save
         User.set_password(request.POST['password'])
         User.save()
         user_requirement = user_requirement_form.save(commit=False)
         # Set user
         user_requirement.user = User
         user_requirement.save()
         user_requirement_form.save_m2m()
         messages.success(request,('Project saved successfully'))
         return render(request,'account/home1.html')
        else:
          messages.warning(request, 'Please correct the errors above')
    else:  
        user_form = UserForm()
        user_requirement_form = UserRequirementForm()
    return render(request,'account/register.html', {'user_form': user_form, 'requirements_form': user_requirement_form})

def login(request):
  if request.method == 'POST':
    username = request.POST['username']
    password = request.POST['password']
    user = auth.authenticate(username=username, password=password)
    if user is not None:
      if user.is_active:
        auth.login(request, user)
        messages.success(request, 'You are now logged in')
        return redirect('dashboard')
    else:
      messages.error(request,'Invalid')
      return redirect('login')
  else:
    return render(request, 'account/login.html')

def dashboard(request):
    return render(request, 'account/dashboard.html',);

панель инструментов. html:

<details>
  <summary class="summary ml-4">User Details</summary>
  <p class="p1 ml-4">The contents that are selected by the user</p>
  <p class="p2 ml-4">All content and graphics on this web site are the property of the company Refsnes Data.</p>
</details>

<p class="p3 ml-4 mt-4"><b>Room:<br></b>{{user.room}}</p>
<p class="p4 ml-4"><b>GOAL:</b><br>{{user.goal}}</p>
<p class="p5 ml-4"><b>FURNITURE:</b><br>{{user.furniture}}</p>
<p class="p6 ml-4"><b>DESIGN:</b><br>{{user.design}}</p>

My models.py:

class User_Requirement(models.Model):
    user=models.OneToOneField(User,on_delete=models.CASCADE)
    room = models.ForeignKey(room,on_delete=models.CASCADE)
    goal = models.ManyToManyField(goal)
    design = models.ManyToManyField(design)
    furniture = models.ForeignKey(furniture,on_delete=models.CASCADE)
    created_at = models.DateTimeField(default=datetime.now)
    updated_at = models.DateTimeField(default=datetime.now)

1 Ответ

0 голосов
/ 16 января 2020

request.user предоставит данные текущего пользователя, вошедшего в систему. Здесь у вас есть отношение OneToOne к вашей модели User_Requirement, поэтому вы можете попробовать вот так

<p class="p3 ml-4 mt-4"><b>Room:<br></b>{{request.user.user_requirement.room}}</p>

Редактировать на основе комментария:

Поскольку ваша цель - это поле ManyToMany, вам нужно повторить его

 <p class="p4 ml-4"><b>GOAL:</b>
     {% for goal in request.user.user_requirement.goal.all %}
    <br>{{goal}}</p>

   {% if not forloop.last %}, {% endif %} #if you want to separate goals with comma

    {% endfor %}
...