我是django的新手,现在我被困住了。 我正在尝试传递form [action]属性中的url,该属性将转到我在[views.py]文件中定义的编辑函数并执行它的工作,但每当我尝试传递url [NoReverseMatch]时都会显示。
这就是我试图做的事情:
<div class="modal fade" id="editform" role="dialog">
<div class="modal-dialog">
<div class = "modal-content">
<div class = "modal-header">
<button type = "button" class = "close" data-dismiss="modal">×</button>
<h3 class="modal-title">
<b>Edit Information</b>
</h3>
</div>
<div class = "modal-body">
<form action="{% url 'studentapp:editrow' rowid=id %}" id="editform" method="POST">
{% csrf_token %}
<div class = "form-group">
<label for = "your_name">
Your name:
</label>
<input class = "form-control" id="new_name" type = "text" name="name" value="{{ student_detail.name }}" placeholder="Enter your name">
</div>
<div class="form-group">
<label for = "course_name">
Course:
</label>
<input id="new_course" class = 'form-control' type = "text" name="course" value="{{ student_detail.course }}" placeholder="Enter your course">
</div>
<div class = "form-group">
<label for = "rollno">
Roll No.:
</label>
<input id="new_rollno" type = "text" class = 'form-control' name="roll" value="{{ student_detail.roll }}" placeholder="Enter your roll number">
</div>
<div class = "form-group">
<label for ="addr">
Address:
</label>
<input id="new_address" type = "text" name="address" class = 'form-control' value="{{ student_detail.address }}" placeholder="Enter your address"/>
</div>
<input type = "submit" value="Update" id="update" class = "btn btn-success" style="font-size:18px;" />
</form>
</div>
</div>
</div>
</div>
在我的urls.py中,我使用了以下网址:
url(r'^editrow/(?P<rowid>[0-9]+)/$', views.editrow, name='editrow'),
我的[editrow]视图看起来像这样:
def editrow(request, rowid):
item = get_object_or_404(Studentapp, rowid=id)
print item
if request.method=="POST":
form = EntryForm(request.POST, instance=item)
if form.is_valid():
post=form.save(commit=False)
post.save()
return HttpResponseRedirect(reverse('studentapp:index'),rowid.id)
else:
form=EntryForm(instance=item)
return render(request, 'index.html',{'form':form})
else:
form=EntryForm(instance=item)
return render(request, 'index.html',{'form':form})
查看渲染是模板:
def index(request):
context = {}
latest_student = Studentapp.objects.order_by('pub_date')
context.update({
'latest_student': latest_student
})
response = {"status": False, "errors": []}
if request.is_ajax():
id = request.POST['id']
response = {}
response['status'] = False
student_detail = Studentapp.objects.filter(id=id).first()
context = {
"student_detail": student_detail
}
template = render_to_string("studentapp/_edit_student.html", context)
response['template'] = template
response['status'] = True
return HttpResponse(json.dumps(response), content_type="applicaton/json")
return render(request, "studentapp/index.html", context)
我在做的事情是: 1)通过for循环在表格中创建一个[edit]按钮。 2)当我点击[编辑]按钮时,会显示一个预先填充的表格(我正在收到)。 3)点击预先填充的表格后,我想编辑该表格并保存,更新的数据反映在我的django数据库中。
答案 0 :(得分:1)
感谢@Alasdair,我查看了他的代码,他试图告诉我什么,我得到了答案。 我试图通过我的动作属性的网址是错误的。这就是我的所作所为。
<form action="{% url 'studentapp:editrow' rowid=student_detail.id %}" id="editform" method="POST">
通过&#34; student_detail&#34;我可以像上面提到的那样获得预先填充的表格。我使用相同的方法来获取id并将其传递给我的&#34; editrow&#34;图。
它现在为我工作。
答案 1 :(得分:0)
您似乎永远不会在视图id
中向您的上下文添加index
。因此模板没有可用的变量。
您需要将该ID添加到您的上下文中。 就像@Alasdair在评论中指出的一样。