Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Передача параметров в представление [RSS Feed]

#1 Окт. 30, 2008 06:50:33

seniorleo
От:
Зарегистрирован: 2008-10-28
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача параметров в представление

Здравствуйте!!!

Вот какой вопрос меня интересует - хочу я сделать систему управления страницами сайта на Django

вот файл models.py

from django.db import models

class Pages(models.Model):
name = models.CharField(maxlength=30)
htmlcode = models.TextField()

def __str__(self):
return self.name


class Admin:
pass
далее каждую отдельную страницу я хочу получать по адресу

http://domainname/page/Имя_страницы

Для чего прописываю в файле urls.py следующее
(r'^page/[A-Za-z]+/$', showpage),
далее функция showpage
def showpage(request,pagename):
pages = Pages.objects.filter(name="main")
return render_to_response('base.html', {'pages': pages})
если я оставляю функцию в таком виде то получаю
TypeError at /page/main/
showpage() takes exactly 2 arguments (1 given)
если убираю request то не могу передать параметр pagename в строчку
pages = Pages.objects.filter(name="main")
то бишь если напрямую указывать название страницы в этой строчке то всё работает а вот как сделать чтобы
функция работала для любого pagename - непонятно

варианты
pages = Pages.objects.filter(name="pagename")
pages = Pages.objects.filter(name='pagename')
pages = Pages.objects.filter(name=pagename)
не работают

и кроме того в книжке по Django сказано следующее

каждое представление всегда принимает объект HttpRequest в качестве первого параметра.

как это понимать? и почему тогда не работает вариант с двумя параметрами?



Офлайн

#2 Окт. 30, 2008 08:42:42

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Передача параметров в представление

seniorleo
как это понимать? и почему тогда не работает вариант с двумя параметрами?
Вы регулярное выражение неправильно написали. Попробуйте так:
(r'^page/([A-Za-z]+)/$', showpage),

#...
pages = Pages.objects.filter(name=pagename)



Офлайн

#3 Окт. 30, 2008 10:26:19

smal
От:
Зарегистрирован: 2008-10-21
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача параметров в представление

Такий варіант пробували ?

(r'^page/(?P<pagename>\w+)/$', showpage)
у Вашому view :
def pageview(request, pagename)
ПС. В документації Django все гарно розписано



Офлайн

  • Начало
  • » Django
  • » Передача параметров в представление[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version