Ich habe gearbeitet, um ein Bearbeitungsformular, wo zeigt Daten in DB gespeichert und Benutzer kann es wie JSP-Modell und Ansicht zu bearbeiten. Wenn der Nutzer auf die Schaltfläche klickt, wird ein Formular angezeigt, aber alle relevanten Informationen in db sind bereits im Formular ausgefüllt, so dass der Benutzer alte Daten ändern kann. Sobald er auf "Senden" geklickt hat, wird er auf main umgeleitet. Es ist mir gelungen, ein Formular anzuzeigen, wenn der Benutzer auf die Schaltfläche Bearbeiten klickt, aber keine Daten abrufen konnte.Django: Daten abrufen und bearbeiten in der gleichen Form, bearbeiten an einem Ort
dies views.py
@login_required
def update_article(request, article_no):
article = get_object_or_404(Article, no=article_no)
if request.method == "POST":
form = ArticleForm(request.POST, instance=article)
if form.is_valid():
post = form.save(commit=False)
post.save()
return redirect('blog.views.detail', no=article.no)
else:
form = ArticleForm(instance=article)
return render(request, 'blog/update_article.html', {'form': form})
urls.py
url(r'^update_article/(?P<article_no>[0-9]+)/$', views.update_article, name='update_article'),
update_article.html
{% extends 'blog/base.html' %}
{% block body %}
<form class="form-horizontal" role="form" action="create_article.html" method="post" enctype="multipart/form-data">
{% csrf_token %}
{% include 'blog/form_template.html' %}
<button type="submit" class="button-primary">submit</button>
</form>
<a href="{% url 'blog:home' %}" class="button button-primary">list</a>
{% endblock %}
detail.html Dieser Teil der Seite ist es, Benutzern senden update_article .html
<form action="{% url 'blog:update_article' item.no %}" method="post" style="display: inline;">
{% csrf_token %}
<input type="hidden" name="no" value="{{ item.no }}" />
<button type="submit" class="button-primary">edit</button>
</form>
form_template.html
{% for field in form %}
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<span class="text-danger small">{{ field.errors }}</span>
</div>
<label class="control-label col-sm-2" for="title">{{ field.label_tag }</label>
<div class="col-sm-10">{{ field }}</div>
</div>
{% endfor %}