Моя форма обновления пользователя не отображается в моем шаблоне - PullRequest
0 голосов
/ 20 марта 2019

Форма обновления моего профиля пользователя не отображается в моем шаблоне.Я вижу только кнопку «Обновить» и название легенды.Но я не вижу фактическую форму.

Вот мои формы.py

from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from django.contrib.auth import get_user_model
from .models import Profile, Post, User

# User = get_user_model()

class UserCreationModelForm(UserCreationForm):
    class Meta:
        model = User
        fields = ['username', 'first_name', 'last_name', 'country', 'city', 'email', 'password1', 'password2', 'access_challenge']


class UserUpdateForm(forms.ModelForm):
    username = forms.CharField()
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username', 'email' ]

Вот мои views.py У меня есть два представления.Один относится к классу, другой - к функциям.


class CabinetView(LoginRequiredMixin, DetailView):
    model = User
    template_name = 'users/user_detail.html'

    def get_object(self):
        return self.request.user

def profile(request):
    uform = UserUpdateForm()
    pform = ProfileUpdateForm()

    context = {
        'uform': uform,
        'pform': pform
    }

    return render(request, 'users/user_detail.html', context)

Вот мой urls.py

from django.urls import path
from .views import UserRegistrationView, CabinetView, PostCreateView, PostDetailView
from . import views

app_name = 'users'

urlpatterns = [
    path('accounts/register/', UserRegistrationView.as_view(), name='register'),
    path('accounts/cabinet/', CabinetView.as_view(), name='cabinet'),
    path('accounts/cabinet/', views.profile, name='profile'),
    path('accounts/cabinet/blog/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
    path('accounts/cabinet/new/', PostCreateView.as_view(), name='post-create'),
    path('', views.home, name='home'),
    path('accounts/cabinet/blog/', views.blog, name='blog'),
    path('accounts/cabinet/countries/', views.countries, name='countries'),
    path('accounts/cabinet/cities/<int:pk>/', views.cities, name='cities'),
    path('accounts/cabinet/address/<int:pk>/', views.address, name='address'),

А вот мой шаблон user_detail.html

      <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <fieldset class="form-group">
          <legend class="border-bottom mb-4">Profile Info</legend>
          {{ uform }}
          {{ pform }}

        </fieldset>
        <div class="form-group">
          <button class="btn  btn-info btn-block" style="border-radius: 0; width: 200px; padding-left: 4px;" type="submit">Update</button>
        </div>
      </form>

1 Ответ

0 голосов
/ 22 марта 2019

Проблема в том, что CabinetView class и profile def указывают на один и тот же URL.

Так что вам нужно изменить profile url на:

path('accounts/cabinet/profile/', views.profile, name='profile'),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...