更新视图不起作用?姜戈
Update view not working? Django
用户可以在 post url:
处创建飞行器
url(r'^upload/aircraft/$', aircraft_create, name="aircraft_create"),
我创建了一个摘要页面,其中显示了所有用户 post。他们可以在这里编辑和删除他们的 post。 url:
url(r'^account/uploads/$', upload_overview, name="account_uploads"),
但是,我希望用户能够在他们的摘要页面上编辑他们的 post。我现在设置它的方式是,他们可以在 upload/aircraft/edit
编辑,但我想成为 account/uploads/edit
。
我已经这样设置了,但它什么也没做?关于它可能是什么的任何线索?
Aircraft/views.py
def aircraft_create(request):
form = aircraft_form(request.POST or None)
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user
instance.save()
messages.success(request, "Your upload has been successfully added!")
return HttpResponseRedirect(instance.get_absolute_url())
else:
messages.error(request, "There seems to be something wrong. Have a look again..!")
context = {"form":form,}
return render(request,'aircraft/aircraft_form.html', context)
更新视图
def aircraft_update(request, id=None):
aircraft = get_object_or_404(Aircraft, id=id)
form = aircraft_form(request.POST or None, instance=aircraft)
if form.is_valid():
form.save()
messages.success(request, "Your edit has been successfully been saved!")
return HttpResponseRedirect(aircraft.get_absolute_url())
return render(request,'aircraft/aircraft_form.html',
{"aircraft": aircraft, "form": form})
模板
{% if UploadedAircraft %}
{% for upload in UploadedAircraft %}
<div class="col-lg-offset-0 col-md-4 col-sm-3 item">
<div class="box"><a href="{{ upload.get_absolute_url }}"><img src="{{ upload.image.url }}" width="200px" height="200px" alt="{{ upload.title }}"/></a>
<h3 class="name"><a href="{{ upload.get_absolute_url }}">{{ upload.name }}</a></h3>
<a href="{% url 'aircraft_update' %}"><button class="btn">Edit</button></a>
<a href="{% url 'aircraft_delete' %}"><button class="btn">Delete</button></a>
</div>
页面浏览摘要
def upload_overview(request):
uploaded_aircraft = Aircraft.objects.filter(user=request.user)
return render(request,'account/upload_overview.html',{'UploadedAircraft':uploaded_aircraft)
url.py
#aircraft/detail/1
url('^aircraft/detail/(?P<id>\d+)/$', aircraft_detail, name='aircraft_detail'),
#account/uploads (Display Users uploads)
url(r'^account/uploads/$', upload_overview, name="account_uploads"),
#upload/aircraft (Create Aircraft)
url(r'^upload/aircraft/$', aircraft_create, name="aircraft_create"),
#Edit/aircraft
url('^account/uploads/$', aircraft_update, name='aircraft_update'),
编辑
def airline_update(request, id=None):
airline = get_object_or_404(Airline, id=id)
form = airline_form(request.POST or None, instance=airline)
if form.is_valid():
form.save()
return HttpResponseRedirect(airline.get_absolute_url())
return render(request,'airline/airline_form.html',
{"airline": airline, "form": form})
Url
#account/upload/edit/ (Edit airline)
url(r'^account/uploads/edit/(?P<id>[0-9]+)$', airline_update, name='airline_update'),
模板
<a href="{% url 'airline_update' id=upload.id %}"><button class="btn">Edit</button></a>
假设您正在尝试编辑具有特定 ID 的飞机,您需要在 url.py 中使用类似的东西(假设 ID 是整数):
url('^account/uploads/edit/(?P<id>[0-9]+)$', aircraft_update, name='aircraft_update')
并且在您的模板中,您需要更新锚 link 以包含 ID:
<a href="{% url 'aircraft_update' id=upload.id %}">
请注意,这假设 upload
对象(在您的模板循环中)包含 id
属性,并且 id
属性 对应到您要更新的飞机 ID。 (您可能已将其命名为 属性。)
编辑:这足以执行 GET 请求。但是,我注意到您对 aircraft_update
的视图定义也尝试检查表单是否有效。这个表格在你的模板中的什么地方?它似乎不在您的循环中。
用户可以在 post url:
处创建飞行器url(r'^upload/aircraft/$', aircraft_create, name="aircraft_create"),
我创建了一个摘要页面,其中显示了所有用户 post。他们可以在这里编辑和删除他们的 post。 url:
url(r'^account/uploads/$', upload_overview, name="account_uploads"),
但是,我希望用户能够在他们的摘要页面上编辑他们的 post。我现在设置它的方式是,他们可以在 upload/aircraft/edit
编辑,但我想成为 account/uploads/edit
。
我已经这样设置了,但它什么也没做?关于它可能是什么的任何线索?
Aircraft/views.py
def aircraft_create(request):
form = aircraft_form(request.POST or None)
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user
instance.save()
messages.success(request, "Your upload has been successfully added!")
return HttpResponseRedirect(instance.get_absolute_url())
else:
messages.error(request, "There seems to be something wrong. Have a look again..!")
context = {"form":form,}
return render(request,'aircraft/aircraft_form.html', context)
更新视图
def aircraft_update(request, id=None):
aircraft = get_object_or_404(Aircraft, id=id)
form = aircraft_form(request.POST or None, instance=aircraft)
if form.is_valid():
form.save()
messages.success(request, "Your edit has been successfully been saved!")
return HttpResponseRedirect(aircraft.get_absolute_url())
return render(request,'aircraft/aircraft_form.html',
{"aircraft": aircraft, "form": form})
模板
{% if UploadedAircraft %}
{% for upload in UploadedAircraft %}
<div class="col-lg-offset-0 col-md-4 col-sm-3 item">
<div class="box"><a href="{{ upload.get_absolute_url }}"><img src="{{ upload.image.url }}" width="200px" height="200px" alt="{{ upload.title }}"/></a>
<h3 class="name"><a href="{{ upload.get_absolute_url }}">{{ upload.name }}</a></h3>
<a href="{% url 'aircraft_update' %}"><button class="btn">Edit</button></a>
<a href="{% url 'aircraft_delete' %}"><button class="btn">Delete</button></a>
</div>
页面浏览摘要
def upload_overview(request):
uploaded_aircraft = Aircraft.objects.filter(user=request.user)
return render(request,'account/upload_overview.html',{'UploadedAircraft':uploaded_aircraft)
url.py
#aircraft/detail/1
url('^aircraft/detail/(?P<id>\d+)/$', aircraft_detail, name='aircraft_detail'),
#account/uploads (Display Users uploads)
url(r'^account/uploads/$', upload_overview, name="account_uploads"),
#upload/aircraft (Create Aircraft)
url(r'^upload/aircraft/$', aircraft_create, name="aircraft_create"),
#Edit/aircraft
url('^account/uploads/$', aircraft_update, name='aircraft_update'),
编辑
def airline_update(request, id=None):
airline = get_object_or_404(Airline, id=id)
form = airline_form(request.POST or None, instance=airline)
if form.is_valid():
form.save()
return HttpResponseRedirect(airline.get_absolute_url())
return render(request,'airline/airline_form.html',
{"airline": airline, "form": form})
Url
#account/upload/edit/ (Edit airline)
url(r'^account/uploads/edit/(?P<id>[0-9]+)$', airline_update, name='airline_update'),
模板
<a href="{% url 'airline_update' id=upload.id %}"><button class="btn">Edit</button></a>
假设您正在尝试编辑具有特定 ID 的飞机,您需要在 url.py 中使用类似的东西(假设 ID 是整数):
url('^account/uploads/edit/(?P<id>[0-9]+)$', aircraft_update, name='aircraft_update')
并且在您的模板中,您需要更新锚 link 以包含 ID:
<a href="{% url 'aircraft_update' id=upload.id %}">
请注意,这假设 upload
对象(在您的模板循环中)包含 id
属性,并且 id
属性 对应到您要更新的飞机 ID。 (您可能已将其命名为 属性。)
编辑:这足以执行 GET 请求。但是,我注意到您对 aircraft_update
的视图定义也尝试检查表单是否有效。这个表格在你的模板中的什么地方?它似乎不在您的循环中。