/ / Django: Как да създадете прост изглед за показване на текущ обект на модел? - джанго

Django: Как да създадете прост изглед за показване на текущ обект на модел? - джанго

models.py:

class User(models.Model):
sex_choices=(("M", "Male"), ("F", "Female"))
category_choices=(("S", "Student"),("T", "Teacher"),("G", "Guardian"))
qual_choices = (("a", "Secondary"),("b", "Senior Secondary"),("c", "Undergraduate"),("d", "Postgraduate"))
area_choices = (("CS", "Computer Science"),("Maths", "Mathematics"),("Phy", "Physics"),("Chem","Chemistry"),("Bio", "Biology"))

first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
age = models.PositiveSmallIntegerField()
sex = models.CharField(max_length=1, choices=sex_choices)
contact = models.CharField(max_length=10)
email = models.EmailField(unique=True)

category = models.CharField(max_length=1, choices=category_choices)
qualification = models.CharField(max_length=1, choices=qual_choices)
area = models.CharField(max_length=5, choices=area_choices, null=True)
current_institution = models.CharField(max_length=30)
about = models.TextField(null=True)

password = models.CharField(max_length=20)

views.py:

class UserDetailView(DetailView):
model = User

def get_context_data(self, **kwargs):
context = super(UserDetailView, self).get_context_data(**kwargs)
return context

urls.py:

urlpatterns = [
url(r"^profile/(?P<slug>[-w]+)/$", views.UserDetailView.as_view(), name="profile")]

шаблони / profile.html:

<font size="6" color="white">Name: {{object.first_name}} {{object.last_name}}</font>

Просто искам да покажа детайлите на текущия потребител, т.е. да покажа полетата на обект от клас User. Не мога да разбера как да създам изглед за същото. Моля, помогнете.

Отговори:

0 за отговор № 1

Във вашия UserDetailView трябва да се обадите get_object() за да получите конкретния обект:

class UserDetailView(DetailView):
model = User

def get_context_data(self, **kwargs):
context = super(UserDetailView, self).get_context_data(**kwargs)
user = super(UserDetailView, self).get_object()
context["user"] = user

return context

Забележка

Във вашия URL адрес сте използвали slug като идентификатор на потребител / профил. Освен ако не греша, че това не е ПК поле във вашия модел. Django "S DetailView изисква стойност, която е представяне на ПК на модела. Например Ако вашият модел има поле UUID като PK тогава URL адресът трябва да има валиден uuid в него, за да може Django да получи обекта. ако slug е използван като група с име, (DetailView употреби pk по подразбиране), тогава трябва да зададете pk_url_kwarg според вас да slug т.е. pk_url_kwarg = "slug".

Препратки: