Wednesday 15 September 2010

python - How to autofill a form template with values stored in database in Django? -



python - How to autofill a form template with values stored in database in Django? -

i fill edit_post.html values stored in database . edit url http://hostname/edit_post/960 . "960" corresponds item id in database . request id update contents.

i wann contents appear here :-

edit_post.html

<form id="category_form" method="post" action="/edit_post/"> {% csrf_token %} {% field in form.visible_fields %} {{ field.errors }} <input type="text" placeholder='{{ field.help_text }}'> {% endfor %} <input type="submit" name="submit" value="create post" /> </form>

urls.py

url(r'^edit_post/(?p<id>\d+)', 'blog.views.edit_post'),

forms.py

class addpostform(forms.modelform): title = forms.charfield(max_length=128, help_text="please come in title ") author = forms.charfield(max_length=128, help_text="please come in author ") bodytext = forms.charfield(max_length=128, help_text="please come in body", required=false) # inline class provide additional info on form. class meta: # provide association between modelform , model model=posts fields = ('title', 'author','bodytext')

finally views.py

def edit_post(request, id): context = requestcontext(request) instance=posts.objects.get(id=id) form = addpostform(instance=instance) if request.method == "post": form = addpostform(request.post,instance=instance) if form.is_valid(): form.save(commit=true) confirmation_message = "post info updated successfully!" homecoming httpresponseredirect('/home') else: print form.errors else: form=addpostform(instance=instance) homecoming render_to_response('edit_post.html', {'form': form}, context)

my model.py

class posts(models.model): author = models.charfield(max_length = 30) title = models.charfield(max_length = 100) bodytext = models.textfield() timestamp = models.datetimefield(default=datetime.now, blank=true)

django this, if hadn't bypassed mechanism of outputting fields. in template should this:

{% field in form.visible_fields %} {{ field.errors }} {{ field }} {% endfor %}

if want maintain placeholder functionality, add together in form class itself:

class addpostform(forms.modelform): title = forms.charfield(max_length=128, widget=forms.textinput(attrs={'placeholder': 'please come in title'}))

python django django-forms

No comments:

Post a Comment