Django универсальный UpdateView возвращает ошибку 404: «При использовании pk не найдено ни одного пользователя, соответствующего запросу» - PullRequest
0 голосов
/ 12 мая 2019

Я создаю веб-приложение Django и хочу использовать общий UpdateView, передавая первичный ключ пользователя. Он работает для DetailView, но не для UpdateView.

Я попытался указать имя шаблона, изменив порядок путей в моем файле urls.py. Я еще не пробовал использовать слизень, но знаю, что смогу использовать ПК.

Я использую встроенную модель User из django.contrib.auth ниже для своего профиля.

views.py:

class Profile(generic.TemplateView):
    template_name = 'accounts/profile.html'

class ProfileUpdate(generic.UpdateView):
    model = User
    fields = ['first_name']
    template_name = 'accounts/profile_update_form.html'

Мой urls.py - это то, что расстраивает меня больше всего. Адрес http://127.0.0.1:8000/accounts/profile/5/ работает нормально, но http://127.0.0.1:8000/accounts/profile/5/edit/ возвращает ошибку 404 "Не найдено ни одного пользователя, соответствующего запросу". Итак, я знаю, что pk = 5 существует, но не работает для моего URL, заканчивающегося в /edit/.

urls.py:

from django.urls import path,include
from django.contrib.auth import views as auth_views
from . import views

app_name = 'accounts'

urlpatterns = [
    path('login/',auth_views.LoginView.as_view(template_name='accounts/login.html'),name='login'),
    path('logout',auth_views.LogoutView.as_view(),name='logout'),
    path('signup/',views.SignUp,name='signup'),
    path('profile/<int:pk>/',views.Profile.as_view(),name='profile'),
    path('profile/<int:pk>/edit/',views.ProfileUpdate.as_view(),name='profile_update'),
]

profile_update_form.html:

{% extends 'base.html' %}
{% load bootstrap4 %}

{% block content %}

<div class="container">
    <h2>Sign Up</h2>
    <form method="POST" enctype="multipart/form-data">
      {% csrf_token %}
      {% bootstrap_form form layout='inline' %}
      <input type="submit" class="btn btn-primary" value="Sign Up">
    </form>
</div>

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