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 "SDetailView
изисква стойност, която е представяне на ПК на модела. Например Ако вашият модел има полеUUID
като PK тогава URL адресът трябва да има валиден uuid в него, за да може Django да получи обекта. акоslug
е използван като група с име, (DetailView
употребиpk
по подразбиране), тогава трябва да зададетеpk_url_kwarg
според вас даslug
т.е.pk_url_kwarg = "slug"
.
Препратки: