首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从主键删除/编辑记录

无法从主键删除/编辑记录
EN

Stack Overflow用户
提问于 2021-07-21 13:11:15
回答 1查看 41关注 0票数 0

我在视图和模板中有一个属性列表。在模板上,我有一个编辑按钮和一个删除按钮。两者都不能工作,但来自不同项目的相同代码工作得很好。它们不会在浏览器或日志级别抛出任何调试错误。它接受点击/输入,转到正确的网址,但仍然留在"rei_properties“页面上。

我正在运行Django 3.1.6框架...

查看“属性”模型中的所有记录:

代码语言:javascript
复制
def rei_properties(request):
    props = Property.objects.all()
    return render(request, 'rei/rei_properties.html', {'props': props})

具有编辑/删除链接的模板:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
    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'),

最后是我的删除和编辑视图:

代码语言:javascript
复制
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')
EN

回答 1

Stack Overflow用户

发布于 2021-07-21 13:25:20

改变,

代码语言:javascript
复制
<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>

代码语言:javascript
复制
<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

代码语言:javascript
复制
from django.urls import path,include
from . import views

app_name = 'your_app_name'
urlpatterns = [
    path('', views.home , name = "your_url_name"),
]

从模板中,您可以引用特定应用程序的特定url,因为在不同的应用程序中可能会有相同的url名称。就像,

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68464264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档