Реверс для 'profile_update' с аргументами '(1,)' не найден. вопрос - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть базовая URL-ссылка для доступа к экрану редактирования профиля, но, похоже, это нарушает мое приложение.

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

из моего base.html (если я уберу эту строку, приложение снова начнет работать).Я не уверен насчет этого параметра user.id, который я передаю в этом - он нужен?

        <li class="nav-item">
      <a class="nav-link" href="{% url 'accounts:profile_update' user.id %}">Edit Profile</a>
    </li>

мой файл URL:

 path('profile/edit/', views.ProfileCreate.as_view(), name='profile_update'),

моя модель:

class Profile(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='userprofile')
    houseNumber = models.CharField(max_length=150, default='')
    street = models.CharField(max_length=150, default='')
    suberb = models.CharField(max_length=150, default='')
    city = models.CharField(max_length=150, default='')
    phone = models.CharField(max_length=150, default='')

    def __unicode__(self):
        return self.user.get_full_name()

    def __str__(self):
        return self.user

    def get_absolute_url(self):
        return reverse('account:profile', kwargs=[self.pk])

моя форма:

class ProfileForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(ProfileForm, self).__init__(*args, **kwargs)

    class Meta:
        model = Profile
        fields = ['user', 'houseNumber', 'street', 'suberb', 'city', 'phone']

HTML-код для формы:

{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block content %}
{% if form.errors %}
    {% for field in form %}
        {% for error in field.errors %}
            <div class="alert alert-danger">
                <strong>{{ error|escape }}</strong>
            </div>
        {% endfor %}
    {% endfor %}
    {% for error in form.non_field_errors %}
        <div class="alert alert-danger">
            <strong>{{ error|escape }}</strong>
        </div>
    {% endfor %}
{% endif %}
  <div class="container">
    <form enctype="multipart/form-data" action="{% url 'accounts:profile_update' %}" method="post" novalidate>
      {% csrf_token %}
      {{ form|crispy }}
      <input name="Submit" type="submit" class="btn btn-success" value="Save"></input>
    </form>
    <p></p>
  </div>

{% endblock %}

Извинения, если этот вопрос похож на несколько других, которые я задал, но мне просто пришлось перезапустить с этой формойиспользуя другой подход, потому что раньше он просто не работал должным образом.

1 Ответ

0 голосов
/ 18 апреля 2019

Согласно вашему URL, вам не нужно пропускать user.id через update_profile.Поэтому, пожалуйста, измените код на:

<a class="nav-link" href="{% url 'accounts:profile_update' %}">Edit Profile</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...