Django:使用Django视图更新和删除对象

时间:2019-11-08 11:50:14

标签: django django-views

我要完成的任务是赋予登录用户权力,使其可以通过Django视图更新和删除其联系人列表。我已对所有模板和views.py功能进行了编码,但无法继续进行。

这是我能够实现的:

“ views.py”:

@login_required
def update_contact(request,contact_id=1):

    current_user = request.user.get_username()
    user = User.objects.filter(username=current_user).first()
    output = UserContacts.objects.filter(current_user_id=user.id)
    count = output.count()

    contact_obj =get_object_or_404(UserContacts,id = contact_id)

    form = UserContactForm()

    if request.method == "POST": 

        form = UserContactForm(request.POST,instance=contact_obj)

        if form.is_valid():
            form.save(commit=True)
            return index(request) 
        else:
            print('Error Form Invalid')

    my_dict = {'output':output,'form':form}

    return render(request,'basic_app/update.html',my_dict)

这是我的update.html模板,用于更新联系人:

{%extends 'basic_app/base.html' %}
{% block body_block %}

<div class="jumbotron">
    <h1>Welcome to update contact page</h1>
    <br />
    {% if output %}
    <table class="table table-striped">
        <thead class="thead-dark">
            <th>First Name</th>
            <th>Edit</th>
        </thead>
        {% for contact in output %}
        <tr>
            <td>{{ contact.first_name}}</td>
            <td><a href="{%url 'basic_app:update_contact' contact.id    %}">Edit</a></td>
        </tr>
        {% endfor %}
    </table>

{% else %}
    <div class="alert alert-warning" role="alert">
        No contact records found!
    </div>
{% endif %}

</div>


{% endblock %}

URLS.Py:

app_name = 'basic_app'

urlpatterns = [
    url(r'^register/$',views.register,name='register'),
    url(r'^user_login/$',views.user_login,name='user_login'),
    url(r'^new_contact/$',views.new_contact,name='new_contact'),
    url(r'^view_contacts/$',views.view_contacts,name='view_contacts'),
    url(r'^update/(?P<contact_id>[\d]+)$',views.update_contact,name='update'),
    url(r'^delete/$',views.delete_contact,name="delete")
]

Here is the error I am currently stuck with

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

在您的urls.py中,更新URL的名称为update

url(r'^update/(?P<contact_id>[\d]+)$',views.update_contact,name='update')

但是在您的模板中,您使用update_contact作为名称。

<td><a href="{%url 'basic_app:update_contact' contact.id    %}">Edit</a></td>

首先尝试更改模板中的名称:

<td><a href="{% url 'basic_app:update' contact.id %}">Edit</a></td>