Я пытаюсь разрешить пользователю обновлять логическую переменную модели, но у меня, похоже, возникают проблемы с сохранением изменения в db, а затем визуализация изменения в шаблоне. модель - «Pic», а логическая переменная - «Хорошо».Проблемы с Django POST во взглядах
В шаблоне (пространство имен 'single_picture'):
<form action="" method="POST">
{% csrf_token %}
{% if Pic.Good %}
<input type="submit" name="choice" id="{{ Pic.id }}" value="False" />
{% else %}
<input type="submit" name="choice" id="{{ Pic.id }}" value="True" />
{% endif %}
</form>
В URLs из приложения:
url(r'^(?P<Pic_id>\d+)/$', views.single_picture, name='single_picture'),
и views.py:
def single_picture(request, Pic_id):
# 'detail' in tutorial
if request.method == 'GET':
pic = get_object_or_404(Pic, pk=Pic_id)
latest_pictures_list = Pic.objects.all()
return render(request, 'pictures/single_picture.html', {'Pic': pic, 'latest_pictures_list': latest_pictures_list})
elif request.method == 'POST':
pic = get_object_or_404(Pic, pk=Pic_id)
latest_pictures_list = Pic.objects.all()
try:
pic.Good=request.POST['choice']
except (KeyError, Pic.DoesNotExist):
return render(request, 'pictures/single_picture.html', {'Pic': pic, 'error_message': 'uhhhh...',
})
else:
pic.save()
return HttpResponseRedirect(reverse('pictures:pic', pic.id))
Если я печатаю pic.Good к терминалу в конце инструкции try: я вижу, что он показывает измененный, но pic.save(), похоже, не сохраняет его до е дБ, и я также получаю
ImproperlyConfigured в/фотографий/4/
Прилагаемый URLconf 4 не имеет каких-либо шаблонов в нем
в рендер заявлении. Это, похоже, указывает на то, что отсутствует в URL-адресах проекта или приложения. Как правильно сохранить изменения и внести изменения?
Это не похоже, чтобы решить одну из моих проблем. Изменения все еще не сохраняются в базе данных, и я получаю NoReverseMatch at/pictures/4/ Обратный для 'pic' с аргументами '(4,)' и аргументами ключевого слова '{}' not found , 0 образец (ы): [] ошибки для обратного вызова(). – mcbrandt13
Не могли бы вы разместить всю конфигурацию своего URL-адреса для приложения? Или, по крайней мере, конфигурацию для 'pictures: pic' url? – dvd
Кажется, вы были правы. Я обновил запрос на возврат: 'return HttpResponseRedirect (reverse ('pictures: single_picture', args = [Pic_id]))' 'single_picture' является именем URL-адреса. Мне также пришлось обновить arg до «Pic_id». – mcbrandt13