【问题标题】:Delete user directly from html template直接从 html 模板中删除用户
【发布时间】:2018-12-26 13:23:34
【问题描述】:

我想创建一个管理员可以删除用户的管理页面。我已经成功地列出了创建的用户,但现在我正在努力创建一个 deleteView 以从我的 django 项目中完全删除用户。

Views.py

def index(request):
    users = User.objects.all()
    return render(request, 'EditUser.html',{'userlist':users})


def deletefunction(request,User =None):
    object = User.objects.get(id=User)
    object.delete()
    return render(request,'EditUser.html')

项目 urls.py

from edit_user.views import deletefunction

urlpatterns = [
    path('admin/', admin.site.urls),
    path('management', include('management.urls')),
    path('management/create', include('signup.urls')),
    path('management/edit', include('edit_user.urls')),
    path('^delete/(?P<User>[0-9]+)/$', deletefunction, name='delete_view'),
]

HTML 代码

<div class="container">
          {% for item in userlist %} 
          <tr> 
              <td>{{ item.username }}</td><a href="{% url 'EditUser:deletefunction' User %}">delete</a> 
          </tr>  
          {% endfor %} 

          </div>

截至目前,当我尝试加载我的页面时,我收到了这个异常。

未找到“删除功能”的反向。 'deletefunction' 不是 有效的视图函数或模式名称。

【问题讨论】:

    标签: python django


    【解决方案1】:
    def deletefunction(request, user_id):
        object = User.objects.get(id=user_id)
        object.delete()
        users = User.objects.all()
        return render(request,'EditUser.html', {'userlist': users})
    

    <div class="container">
              {% for item in userlist %} 
              <tr> 
                  <td>{{ item.username }}</td><a href="{% url 'delete_view' item.id %}">delete</a> 
              </tr>  
              {% endfor %} 
    
              </div>
    

    【讨论】:

    • 当我点击删除按钮时,我收到了这个错误
    • deletefunction() 得到了一个意外的关键字参数“用户”
    • @LesnieSncheider 您是否根据我的编辑更改了函数签名?
    • 是的,我用你的代码替换了我当前的所有代码。 @py_dude
    • 你能改成这样的url path('^delete/(?P[0-9]+)/$', deletefunction, name='delete_view'),
    【解决方案2】:

    我认为你应该删除 href 中的 EditUser。因为您在项目 urls.py(不是 EditUser urls )中使用 url。所以 django 看起来 EditUser app_name 但他们找不到。
    此外,您还没有确定“用户”。您的网址名称为“delete_view”,但您发送了视图名称。
    您可以这样更改吗?也许可以。

    <td>{{ item.username }}</td><a href="{% url 'delete_view' item.id %}">delete</a> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      相关资源
      最近更新 更多