Python 3.5.1 Django 1.10Джанго: Невозможно открыть подробный вид на URL, который вызывает обратные ошибки аргументов в другой точке зрения
Been разрывают мои волосы в течение нескольких часов, но возлагали мой Reverse ошибка Довод вплоть до фактической проблемы.
Когда я пытаюсь открыть форму для редактирования конкретной записи в моей модели, она открывает только пустую (несвязанную) форму. Используя ту же логику, я могу удалить запись, поэтому я уверен, что это нечто глупое. Но я слишком много часов в этом, поэтому я был бы признателен за спасение.
От models.py
class CmsSpaces(models.Model):
sid = models.AutoField(db_column='SID', primary_key=True)
section = models.CharField(db_column='Section', max_length=5)
...Many more columns...
def __unicode__(self):
return self.name
def get_absolute_url(self):
return reverse('cms_spaces:space_edit', args = (self.sid), kwargs=None)
return reverse('cms_spaces:space_delete', args = (self.sid), kwargs=None)
return reverse('cms_spaces:space_new', args = None, kwargs = None)
class Meta:
managed = False
db_table = 'cms_spaces'
От views.py
def CmsSpaces_update(request, sid,
template_name='space_edit.html'):
space = get_object_or_404(CmsSpaces, sid=sid)
form = space_form(request.POST or None, instance=space)
if form.is_valid():
form.save()
return redirect('space_list')
return render(request, template_name, {'form':space_form})
def CmsSpaces_delete(request, sid,
template_name='space_delete.html'):
space = get_object_or_404(CmsSpaces, sid=sid)
if request.method=='POST':
space.delete()
return redirect('space_list')
return render(request, template_name, {'object':CmsSpaces})
От urls.py
from django.conf import settings
from django.conf.urls import include, url
from django.contrib import admin
from cms_spaces import views
urlpatterns = [
url(r'^space_list/$', views.CmsSpaces_list, name='space_list'),
url(r'^space_new/$', views.CmsSpaces_create, name='space_new'),
url(r'^space_edit/(?P<sid>[\w-]+)/$', views.CmsSpaces_update, name='space_edit'),
url(r'^space_delete/(?P<sid>[\w-]+)/$', views.CmsSpaces_delete, name='space_delete'),
]
От space_edit.html. Когда я ввожу url непосредственно для .../space_delete/12345, он продолжает удаление записи с помощью sid = 12345.
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Add or Update Space" />
</form>
От space_list.html (который бросает "Reverse 'для space_edit' с аргументами '(10256,)' и именованных аргументов '{}' не найден 0 шаблон (ы) пробовал:. []"), Как ошибка. 10256 фактически является sid для одной из записей в таблице. Когда я удаляю ссылки на space_edit и space_delete, он отображает список записей. Да, есть еще много строк кода, которые обрабатывают презентацию, но это откидная версия, и она «сломана» даже на этом уровне.
<ul>
{% for CmsSpaces in space_list %}
<li>{{CmsSpaces.sid}} {{ CmsSpaces.section }} {{ CmsSpaces.space}} {{ CmsSpaces.lot }} {{ CmsSpaces.deednum}}
<a href="{% url 'space_edit' CmsSpaces.sid %}">edit</a>
<a href="{% url 'space_delete' CmsSpaces.sid %}">delete</a>
</li>
{% endfor %}
</ul>
Все, что я хочу сделать, это позвонить и отредактировать запись. Если я смогу это сделать, я верю, что просмотр списка будет работать, и тогда я буду на пути домой. Проблема заключается в том, что, хотя она правильно захватывает sid, она не может правильно передать ее в качестве аргумента модели. Помогите! Благодарю.
EDIT
from django import forms
from django.forms import ModelForm
from masterdata.models import CmsSpaces
class space_form(ModelForm):
class Meta:
model = CmsSpaces
fields = [
'sid',
'section',
'space',
'lot',
'deednum',
'purchdate',
'notes',
'perpetualcare',
]
Я сожалею, что у меня нет для вас решение, но хотелось бы отметить, что-то : кажется, что плохая идея удалась, просто набрав URL-адрес. Возможно, это то, что вы хотите, но если я ошибаюсь, удаление по URL не должно быть возможным, если ваш запрос должен быть «POST» для удаления. – elethan
Предоставлено. Это была разорванная и лишенная версии. Я хотел устранить как можно больше кода, сохраняя при этом ошибку. Процесс устранения. – Craig
Got it. Надеюсь, вы разобрались! – elethan