我在视图和模板中有一个属性列表。在模板上,我有一个编辑按钮和一个删除按钮。两者都不能工作,但来自不同项目的相同代码工作得很好。它们不会在浏览器或日志级别抛出任何调试错误。它接受点击/输入,转到正确的网址,但仍然留在"rei_properties“页面上。
我正在运行Django 3.1.6框架...
查看“属性”模型中的所有记录:
def rei_properties(request):
props = Property.objects.all()
return render(request, 'rei/rei_properties.html', {'props': props})具有编辑/删除链接的模板:
<table>
<tr>
<th>Address</th>
<th>City</th>
<th>State</th>
<th>Zipcode</th>
<th colspan=2>Actions</th>
</tr>
{% for prop in props %}
<tr>
<td>{{ prop.address }}</a></td>
<td>{{ prop.city }}</a></td>
<td>{{ prop.state }}</a></td>
<td>{{ prop.zipcode }}</a></td>
<td>
<a href="{% url 'rei_properties' %}edit/{{ prop.pk }}/">Edit</a>
</td>
<td>
<a href="{% url 'rei_properties' %}del/{{ prop.pk }}/" onclick="return confirm('Are you sure you want to delete this?')">Delete</a>
</td>
</tr>
{% endfor %}
</table>我的urls:
url(r'^rei_properties/', views.rei_properties, name='rei_properties'),
url(r'^rei_properties/edit/(?P<pk>[0-9]{1,10})/$', views.rei_properties_edit, name='rei_properties_edit'),
url(r'^rei_properties/del/(?P<pk>[0-9]{1,10})/$', views.rei_properties_del, name='rei_properties_del'),最后是我的删除和编辑视图:
def rei_properties_edit(request, pk):
prop = get_object_or_404(Property, pk=pk)
if request.method == 'POST':
form = PropertyForm(request.POST, instance=prop)
if form.is_valid():
prop = form.save(commit=False)
prop.save()
return redirect('rei_properties')
else:
form = PropertyForm(instance=prop)
return render(request, 'rei/rei_properties_edit.html', {'form': form})
def rei_properties_del(request, pk):
Property.objects.get(pk=pk).delete()
return redirect('rei_properties')发布于 2021-07-21 13:25:20
改变,
<td>
<a href="{% url 'rei_properties' %}edit/{{ prop.pk }}/">Edit</a>
</td>
<td>
<a href="{% url 'rei_properties' %}del/{{ prop.pk }}/" onclick="return confirm('Are you sure you want to delete this?')">Delete</a>
</td>至
<td>
<a href="{% url 'rei_properties_edit' prop.pk %}">Edit</a>
</td>
<td>
<a href="{% url 'rei_properties_del' prop.pk %}" onclick="return confirm('Are you sure you want to delete this?')">Delete</a>
</td>url的name属性用于直接链接来自模板的调用,而不是使url格式...
添加了,我建议你在urls.py中给你的应用命名如下,
urls.py
from django.urls import path,include
from . import views
app_name = 'your_app_name'
urlpatterns = [
path('', views.home , name = "your_url_name"),
]从模板中,您可以引用特定应用程序的特定url,因为在不同的应用程序中可能会有相同的url名称。就像,
<td>
<a href="{% url 'rei_properties' %}edit/{{ prop.pk }}/">Edit</a>
</td>
<td>
<a href="{% url 'your_app_name:your_url_name' %}del/{{ prop.pk }}/" onclick="return confirm('Are you sure you want to delete this?')">Delete</a>
</td>https://stackoverflow.com/questions/68464264
复制相似问题