« Back To Blog | 24th June 2011 (11 months ago)
I see this question pop up quite regularly around the place, and as I was doing something similar today so I thought I'd write it up for reference.
Let's say we have a page that provides a form allowing a user to send messages to their friends. They can type a comma-separated list of names plus a message, and it will be sent to everyone in the list.
![]()
Sometimes though, they arrive on this page from a different section of the website, and the link they clicked also passed some names of friends to be autofilled in the recipients box:
http://website.com/app/sendmessage/?recipients=joe,bob,bill
So to allow for this, lets first lets see a very simple Model to represent our messages:
class Message(models.Model):
recipients = models.CharField(max_length=150)
message = models.TextField(max_length=300)
And a simple ModelForm to use render in the template:
class MessageForm(forms.ModelForm):
pass
class Meta:
model = Message
So if the initial data wasn't dynamic, we could simply pass it as a parameter when creating the form:
class MessageForm(forms.ModelForm):
recipients = forms.CharField(initial="Bob")
class Meta:
model = Message
This of course doesn't work if we want to change the initial data on every request. The easiest way to change the it on the fly is to handle it in the view that is creating the form. In my view, I check to see if the request is a POST (i.e. the form has been filled out and submitted) or a GET (the form is to be created either empty, or with initial values). If it is a GET we simply append the data gathered from the GET parameters into the appropriate fields "initial" property.
def send_message(request):
if request.method=='POST':
# Check that the parameters are OK
form = MessageForm(request.POST)
if form.is_valid():
# Go and send message
else:
# Grab get parameters and put them in the form
form = MessageForm()
form.fields['recipients'].initial = request.GET.get('recipients', None)
# Render Template
Because the form will be getting validated when it is POSTed, we don't particularly need to worry about the legitimacy of the individual parameters. If they are bogus, they form will complain on POSTing.
MBRANDBOX - 1 month ago
Рекламное дизайн-бюро m-brand осуществляет разработку рекламы в Москве. Полный ассортимент наших услуг вы можете посмотреть http://m-brand.ru/price - тут. Приглашаем всех к сотрудничеству. http://m-brand.ru/
IDEOLEMIT - 3 weeks, 2 days ago
Данный сайт позволит вам наслаждаться просмотром фильмов онлайн. Здесь вы найдете все новинки кино 2012 года по мере их выхода. И все они в хорошем качастве. Боевики, триллеры, ужасы, мудьтфильмы...каждый найдете что посмотреть. Морской бой, Гнев Титанов,Шпион , Американский пирог, Ворон, Голодные игры, Джон Картер. Все фильмы можно смотреть не только онлайн, но и скачать к себе на компьютер. http://kino-doma.tk Приятного просмотра!
SEMUELGIRS - 2 weeks, 2 days ago
http://www.onsite.ru/
NURLEVA - 2 weeks ago
Высокопрофессиональный уровень подготовки сотрудников нашей компании, образование в крупнейшем вузе мира и разнообразное приобретение степени дают возможность утверждать о профессионализме наших сотрудников и адвокатов и ассоциации в целом. На каждый вопрос потребителя непременно будет найден ответ, любой спор решен, а жалоба в суд выиграно. Круг дел, разрешаемых нашими юристами обширен: начиная ликвидации ооо и оканчивая решением жилищьных проблем. На все дела имеются разрешения и сопутствующие документы. Адвокатская ассоциация НУР : <a href=http://nur63.ru>Таможенные споры</a>
NURGROX - 1 week, 6 days ago
Высокий уровень работы сотрудников нашей фирмы, образование в величайшем вузе страны и постоянное увеличени степени дают право утверждать о профессионализме наших юристов и адвокатов и фирмы в целом. На всякий вопрос клиента каждый раз будет найдено решение, каждый спор разрешен, а обращение в суд выиграно. Перечень работ, предлагаемых нашими юристами разнообразен: включая регистрации ооо и завершая разрешением жилищьных споров. На все услуги имеются разрешения и соответствующие договора. Правовая фирма НУР - <a href=http://nur63.ru>Жилищные споры</a>
MUBACTIOTSCIT - 1 week, 6 days ago
<img>http://ecoenergy.org.ua/images/stories/energo-novosti/97_of_americans_overestimate_the_cost_of_installing_solar_panels_hbhov(1).jpg</img> Всего 3% американцев устанавливают солнечные панели на крышах своих домов. Несмотря на то, что большинство людей прекрасно отдает себе отчет в эффективности и пользе солнечных панелей, устанавливают их далеко не все. Если взять, например, американцев, то только лишь 3% населения устанавливают солнечные панели на крыши своих домов. Остальные 97% просто не в состоянии их установить или считают это слишком дорогим... <a href=http://ecoenergy.org.ua/energeticheskie-novosti/super-pesok-dlya-effektivnoj-ochistki-pitevoj-vody.html>нагрев воды солнцем своими руками</a> <a href=http://ecoenergy.org.ua/tehnologii/novaya-texnologiya-pozvolit-uvelichit-yomkost-ionno-litievyx-akkumulyatorov-v-10-raz.html>прибор для увеличения емкости аккумулятора</a> <a href=http://ecoenergy.org.ua/energeticheskie-novosti/na-yuge-odesskoj-oblasti-nachalos-stroitelstvo-solnechnyx-elektrostanczij.html>электростанция баланс</a> <a href=http://ecoenergy.org.ua/energeticheskie-novosti/siemens-uxodit-iz-yadernoj-energetiki.html>siemens</a>
FUXERTIPOC - 1 week, 5 days ago
http://waudress.ru/