@rumak

Django. Как исправить ошибку при сохранении формы?

Есть страница, отображающая данные класса 'List'. На этой странице ссылка на другую страницу с формой редактирования этих данных. При попытке сохранения этих данных в любом виде выскакивает ошибка:
spoiler
9796140c51064221892062cda31f3500.png
NoReverseMatch at /job/1/edit/
Reverse for 'about_me' not found. 'about_me' is not a valid view function or pattern name.


Код:

models.py
class List(models.Model):
    first = models.CharField(max_length=50)
    second = models.CharField(max_length=50)
    patronymic = models.CharField(max_length=50)
    birthday = models.DateField()
    phone = models.CharField(max_length=12)

    def __str__(self):
        return self.second


forms.py
class ListForm(forms.ModelForm):
    class Meta:
        model = List
        fields = ('first', 'second', 'patronymic', 'birthday', 'phone',)


views.py
def about_me(request, pk):
    about = get_object_or_404(List, pk=pk)
    template = 'job/about_me.html'
    body = {'about': about}
    return render(request, template, body,)

def edit_me(request, pk):
    about = get_object_or_404(List, pk=pk)
    if request.method == "POST":
        form = ListForm(request.POST, instance=about)
        if form.is_valid():
            about = form.save(commit=False)
            about.save()
            return redirect('about_me', pk=about.pk)
    else:
        form = ListForm(instance=about)
    return render(request, 'job/about_form.html', {'form': form})


urls.py
urlpatterns = [
    url(r'^(?P<pk>[0-9]+)/edit/$', views.edit_me, name='edit_me'),
    url(r'^(?P<pk>[0-9]+)/$', views.about_me, name='about_me'),
]


about_me.html
{% extends 'job/base.html' %}

{% block content %}
        <h1>Личная информация:</h1>
        <p>Имя: {{ about.first }}</p>
        <hr>
        <p>Фамилия: {{ about.second }}</p>
        <hr>
        <p>Отчество: {{ about.patronymic }}</p>
        <hr>
        <p>Дата рождения: {{ about.birthday }}</p>
        <hr>
        <p>Номер телефона: {{ about.phone }}</p>
        <hr>
        <a class="btn btn-default" href="{% url 'job:edit_me' pk=about.pk %}"><span class="glyphicon glyphicon-pencil">Изменить</span></a>
{% endblock %}


about_form.html
{% extends 'job/base.html' %}

{% block content %}
    <h1>Редактирование информации о себе</h1>
    <form method="POST" class="edit-me">{% csrf_token %}
            {{ form.as_p }}
            <button type="submit" class="save btn btn-default">Сохранить</button>
    </form>
{% endblock %}


Спасибо!
  • Вопрос задан
  • 1828 просмотров
Решения вопроса 1
tema_sun
@tema_sun
Судя по{% url 'job:edit_me' pk=about.pk %} вы показанный urls.py где-то инклудите с указанием неймспейса job. А во вьюшке пытаетесь использовать имя без указания пространства имен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы