我要完成的任务是赋予登录用户权力,使其可以通过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
任何帮助将不胜感激!
答案 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>