#guestbook/forms.py
#
from django.forms import ModelForm, CharField, ValidationError
from guestbook.models import Entry
class EmptyField(CharField):
def clean(self, value):
if value!='':
raise ValidationError('Please DO NOT fill this field!')
class EntryForm(ModelForm):
do_not_use=EmptyField(label="Do not fill")
def __init__(self, data=None, *args, **kwargs):
if data=={}:
data=None
ModelForm.__init__(self, data, *args, **kwargs)
class Meta:
model=Entry
#guestbook/models.py
from django.db import models
from django.contrib import admin
class Entry(models.Model):
nick=models.CharField(max_length=50)
url=models.URLField(blank=True)
date=models.DateTimeField(auto_now_add=True)
text=models.TextField()
try:
admin.site.register(Entry)
except admin.sites.AlreadyRegistered:
pass
#guestbook/views.py
from django.shortcuts import render_to_response
from guestbook.models import Entry
from guestbook.forms import EntryForm
def guestbook(request):
form=EntryForm(request.POST)
if form.is_valid():
form.save()
entries=Entry.objects.all().order_by("-date")
templates={'form': form, 'entries': entries}
return render_to_response("gbook.html", templates)
#guestbook/templates/gbook.html
{% extends "base.html" %}
{%block content%}
<h1>Guestbook</h1>
<form action="" method="POST">
<table>
{{form}}
</table>
<input type="submit" value="send" />
</form>
<div class="guestbook">
{%for entry in entries %}
<div class="entry">
<div class="header">
{%if entry.url%}<a href="{{entry.url}}">{%endif%}
<span class="nick">{{entry.nick}}</span>
{%if entry.url%}</a>{%endif%}
wrote at
<span class="date">{%load humanize%}{{entry.date.date|naturalday}}</span>
<span class="time">{{entry.date.time}}</span>:
</div>
<div class="text">
{{entry.text|linebreaks}}
</div>
</div>
{%endfor%}
</div>
{%endblock%}
Comments
hi!
if you voted this down, please tell me why.
Only if i know what the problem is, i can help/fix it. Thank you in advance.
#
nice example,
have to enable django.contrib.humanize
btw, check this line, line break missing : admin.site.register(Entry)from django.template import RequestContext
#
This line was a mistake pasting the script, from my more complex application using some RequestContext filling Middleware.
With direct_to_template you do not need a RequestContext in your servlets anyway.
#