Проблема перенаправления уникальных URL в Django

Возникли проблемы при попытке перенаправить после отправки, чтобы изменить другие поля
Также с созданием гиперссылки на представление.

При отправке формы с перенаправлением я получаю сообщение об ошибке ниже.
Если я отправлю форму с запросом рендеринга на другую страницу, форма сохранится нормально.

Метод запроса: запрос POST
URL: http://127.0.0.1:8000/resourcelib/add_pricebook Джанго
Версия: 1.8.4 Тип исключения: NoReverseMatch Значение исключения:
Обратное для ‘detail_pricebook’ с аргументами ‘()’ и ключевым словом
Аргументы ‘{‘ p_id ‘: 22L}’ не найдены. 0 шаблон (ов) пытались: []

Мой Model.py

class PriceBook(models.Model):
pricebook_id = models.AutoField(primary_key=True)
pricebook_name = models.CharField(max_length=255,verbose_name='PriceBook Name')
discription = models.TextField(verbose_name='Discription')
date_created = models.DateTimeField(auto_now_add=True, blank=True)
active = models.SmallIntegerField(max_length=1, blank=True)

def __unicode__(self):
return self.pricebook_name

view.py

 def new_pricebook(request):
if request.method == "POST":
pricebook_form = PricebookForm(request.POST)
if pricebook_form.is_valid():
post = pricebook_form.save(commit=False)
post.save()
#return render(request, 'resourcelib/thanks.html',)
return redirect('detail_pricebook', p_id=post.pricebook_id)

else:
pricebook_form = PricebookForm()
return render(request, 'resourcelib/pricebook_add.html', {'pricebook_form': pricebook_form})

def detail_pricebook(request, p_id):
pricebook_from = get_object_or_404(PriceBook, pk=p_id)
return render(request, 'resourcelib/pricebook_detail.html', {'pricebook_from':pricebook_from})

url.py

url(r'^add_pricebook', views.new_pricebook, name='new_pricebook'),
url(r'^list_pricebook', views.list_pricebook, name='list_pricebook'),
url(r'^detail_pricebook/(?P<p_id>[0-9]+)/$', views.detail_pricebook, name='detail_pricebook'),

Я не верю, что это в файле URL, потому что я не получаю ошибок, если я просматриваю запись, например.
127.0.0.1:8000/resourcelib/detail_pricebook/3/ — работает нормально

Однако я не могу заставить свои ссылки работать, я могу перечислить свои записи хорошо. Но ссылка не будет работать из кода ниже, когда вы нажимаете на ссылку, она просто появляется 127.0.0.1:8000/resourcelib/%7B%%20url%20’detail_pricebook’%20p_id.pk%7D

{% if pricebooks %}
<ul>
{% for pricebook in pricebooks %}
<li><h1><a href="{% url 'detail_pricebook' p_id.pk}">{{ pricebook.pricebook_name }}</a></h1></li>
{% endfor %}
</ul>
{% else %}
<p>No price books have been created.</p>
{% endif %}
{% endblock %}

Любая помощь будет принята с благодарностью

3

Решение

% отсутствует в теге URL. Будь осторожнее.

0

Другие решения

спасибо @ozgur, есть идея, что у меня неправильная ссылка для ПК. Я был в состоянии разобраться в проблеме. У меня было пространство имен в основном проекте urls.py … вероятно, информацию, которую я должен был дать, забыл, что я использовал cookiecutter для этого

url(r'^resourcelib/', include('oneworksite.resourcelib.urls', namespace='resource')),

поэтому я смог получить ссылку, работающую с

<a href="{% url 'resource:detail_pricebook' pricebook.pk %}">{{ pricebook.pricebook_name }}</a>

Затем в моем перенаправлении я изменился на
return redirect('resource:detail_pricebook', p_id=post.pk)

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector