Пользовательский дисплей Информация в Django - PullRequest
0 голосов
/ 25 февраля 2020

У меня возникла проблема с отображением личной информации учащихся, такой как: имя, фамилия, регистрационный номер, пол, национальность, номер телефона и т. Д. c (все они определены как charField). Когда они создали свой профиль. Для каждого зарегистрированного студента я хочу отображать их информацию в / дома, когда они вошли в систему.

Я читал документы и искал реализации, которые близки к тому, что я хочу делаю, но не могу заставить его работать нормально.

ЗДЕСЬ МОЙ КОД ТАК ДАЛЕКО

Модели

from django.db import models
from django.conf import settings

User=settings.AUTH_USER_MODEL
# Create your models here.
class Pinforamtion(models.Model):
    user=models.ForeignKey(User,null=True,default=1,on_delete=models.CASCADE)
    surname=models.CharField(max_length=120)
    firstname=models.CharField(max_length=120)
    other_names=models.CharField(max_length=120)
    nationality=models.CharField(max_length=120)
    date_of_birth=models.CharField(max_length=120)
    sex=models.CharField(max_length=120)
    phone_number=models.CharField(max_length=120)
    department=models.CharField(max_length=120)
    majors=models.CharField(max_length=120)
    reg_no=models.CharField(max_length=120)
    img=models.ImageField(upload_to='pics')

Просмотры

from django.shortcuts import render,redirect
from.models import Pinforamtion, User
from django.http import HttpResponse
from .forms import StudentForm
def index(request):
    obj=Pinforamtion.objects.all()
    my_context={
        'object':obj
    }
    return render(request,"student/index.html",my_context)

def student_create_view(request):
    form=StudentForm(request.POST or None,request.FILES or None)
    if form.is_valid():
        form.save()
        form=StudentForm()
    context={
        'form':form
    }
    return render(request,"student/student_create.html",context)

URL-адреса


from django.urls import path

from . import views

urlpatterns=[
    path("index",views.index,name="index"),#calling of views into urls
    path("create",views.student_create_view,name="create")

]

УКАЗАТЕЛЬ ШАБЛОН

<div class="row">

              {% if user.is_authenticated %}
              {% for subjects in object  %}
            <!-- Area Chart -->
            <div class="col-xl-8 col-lg-7">
              <div class="card shadow mb-4">
                <!-- Card Header - Dropdown -->
                <div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
                  <h6 class="m-0 font-weight-bold text-primary">Personal Information</h6>
                  <div class="dropdown no-arrow">

                  </div>
                </div>
                <!-- Card Body -->
                <div class="card-body">
                  <div class="text-center-capitalize" "text-capitalize">
                   <div class=" text-primary-center">Surname: {{subjects.surname}}</div>
                   <div class=" text-primary-center">First name: {{subjects.firstname}}</div>
                   <div class=" text-primary-center">Other names: {{subjects.other_names}}</div>
                   <div class=" text-primary-center">Nationality: {{subjects.nationality}}</div>
                   <div class=" text-primary-center">Date of Birth: {{subjects.date_of_birth}}</div>
                   <div class=" text-primary-center">Sex: {{subjects.sex}}</div>
                   <div class=" text-primary-center">Phone Number: {{subjects.phone_number}}</div>
                   <div class=" text-primary-center">Department: {{subjects.department}}</div>
                   <div class=" text-primary-center">Majors: {{subjects.majors}}</div>
                   <div class=" text-primary-center">Registration no: {{subjects.reg_no}}</div>
                  </div>
                </div>
              </div>
            </div>

            <!-- Pie Chart -->
            <div class="col-xl-4 col-lg-5">
              <div class="card shadow mb-4">
                <!-- Card Header - Dropdown -->
                <div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
                  <h6 class="m-0 font-weight-bold text-primary">Image</h6>
                  <div class="dropdown no-arrow"></div>
                </div>
                <!-- Card Body -->
                <div class="card-body">
                   </div>
                  <img class="img-fluid" src="{{subjects.img.url}}" alt="">
                </div>
                </div>
              </div>
            </div>
            {% endfor %}
              {% endif %}
          </div>

          <!-- Content Row -->
        <!-- /.container-fluid -->
           </div>
       </div>
      <!-- End of Main Content -->

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Вы можете получить данные вошедшего в систему пользователя, просто используя request.user, пример PFB.

def retuserdetails(request):
    if request.user.is_authenticated:
       print(request.user.username,request.user.id)

request.user предоставит информацию о текущем пользователе, если пользователь не вошел в него вернет AnonymusUser

0 голосов
/ 25 февраля 2020

Есть несколько возможных результатов. Сначала вы хотите получить информацию из базы данных. Затем вам нужно получить доступ к моделям и вызвать метод Speci c, чтобы получить информацию.

Случай 1 : вы используете внутреннюю Django пользовательскую модель. Тогда это содержимое вашей models.py в папке вашего приложения:

from django.contrib.auth import get_user_model

User = get_user_model()

Случай 2 : у вас есть конкретная c модель для студентов. Тогда у вас есть что-то подобное в приложении models.py:

from django.db import models

class Student(models.Model):
    username = models.CharField('username', max_length=150, unique=True,)
    first_name = models.CharField('First name', max_length=30, blank=True)
    last_name = models.CharField('Last name', max_length=150, blank=True)
    email = models.EmailField('Email address', blank=True)
    # other fields

Затем вам нужно получить доступ к данным из базы данных из ваших функций представлений. Вот пример кода для views.py:

from django.shortcuts import render, get_object_or_404
from .models import User, Student  # your models imported here 


def profile(request, username):
    # get student profile if you use User model
    student = get_object_or_404(User, username=username)  
    # Now you can pass student object to template
    return render(request, "index.html", {"student": student})

Таким образом, в шаблоне вы можете получить доступ к объекту Student и его свойствам, используя Django Templates {{ student.last_name }}.

Лучший способ понять , как работает Django, - следовать учебнику и получить первое впечатление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...