Django: обновление и удаление объектов с использованием Django Views - PullRequest
0 голосов
/ 08 ноября 2019

Задача, которую я пытаюсь выполнить, - дать пользователю, вошедшему в систему, возможность обновлять и удалять свой список контактов с помощью представлений 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")
]

Вот ошибка, в которой я сейчас застрялс

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 08 ноября 2019

В вашем 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...