Я новичок в Django и изучаю CBV.
Я использовал Django ', встроенный в класс User, для создания нескольких пользователей на моем веб-сайте, а затем создал следующие представления ниже.
URL-адрес, сгенерированный для моего представления user_list, равен http://127.0.0.1: 8000 / basicapp / user_list / и работает. Он показывает пользователям
URL-адрес, сгенерированный моим представлением user_detail, равен http://127.0.0.1: 8000 / basicapp / 1 / (2,3 ... и так далее) и работает при вводе вручную. Он показывает детали пользователя
Проблема заключается в следующем:
В user_list. html я добавляю: <a href="{{person.id}}"
и в url.py я добавляю: url(r'^(?P<pk>[-\w]+)/$',views.UserDetailView.as_view(),name='detail')
Итак, когда страница списка пользователей загружается с моими пользователями в виде ссылок, при наведении курсора на ссылки я получаю такой путь, как:
http://127.0.0.1: 8000 / basicapp / user_list / 1 - эта ссылка не работает. Я нажимаю на нее и ничего не делаю.
Должно получиться:
http://127.0.0.1: 8000 / basicapp / 1 . Эта ссылка работает, потому что я тестировал ее вручную.
Я думаю, что делаю что-то не так в urls.py, но не уверен. Регулярное выражение, которое я взял из обучающего видео, имеет только общее представление о нем.
basicapp/views.py:
from django.contrib.auth.models import User
from django.views.generic import View,TemplateView,ListView,DetailView
class UserView(ListView):
context_object_name='users'
model=models.User
template_name='basicapp/user_list.html'
class UserDetailView(DetailView):
context_object_name='user_detail'
model=models.User
template_name='basicapp/user_detail.html'
basicapp/urls.py:
from django.conf.urls import url
from django.urls import path
from basicapp import views
urlpatterns = [
url(r'^$',views.index,name='index'),
url(r'^user_list/',views.UserView.as_view(),name='list'),
url(r'^(?P<pk>[-\w]+)/$',views.UserDetailView.as_view(),name='detail')
]
user_list. html
user_list.html:
{% extends 'base.html' %}
{% load static %}
{% block title %}
<title>User page</title>
{% endblock title %}
{% block content %}
<ol>
{%for person in users %}
<li><a href="{{person.id}}">{{person}} and {{person.id}}</a></li>
{%endfor%}
</ol>
{% endblock content %}
user_detail. html:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>user_detail</title>
</head>
<body>
<div class="jumbotron">
<h1>User Profile Page</h1>
<p>First name : {{user_detail.first_name}}</p>
<p>Last Name: {{user_detail.last_name}}</p>
<p>Email: {{user_detail.email}}</p>
</div>
</body>
</html>