2013-10-26 3 views
0

Я сделал приложение Django, чтобы показать список кластерных новостных статей. Я хочу, чтобы на первой странице отображалось всего три статьи, и если пользователь хочет показать их все, он может щелкнуть ссылку «Просмотреть реальное покрытие» и посмотреть общий список статей (как функции GoogleNews). На главной странице у меня есть список статей в переменной под названием lista. И я хочу опубликовать только первые три элемента на главной странице, и я хочу перенести список статей на новую страницу, и позвольте мне позвонить тема. Я добавить тему функции в файле views.py как:Как открыть динамически новую страницу в Django

def theme(request,argument): 
    lista=argument 
    return render(request,'theme.html', locals()) 

И в main.html кода, где я вызываю функцию тема выглядит следующим образом:

<a href="{% url "mysite.views.theme" argument=lista %} target="_blank"> 

или я попробую:

<a href="{% url "mysite.views.theme" lista %} target="_blank"> 

urls.py код:

urlpatterns = patterns('', 
    ('^main/$', main), 
    ('^all/$', tegjitha), 
    ('^(sport)/$', gen), 
    ('^(teknologji)/$', gen), 
    ('^(showbiz)/$', gen), 
    ('^(bota)/$', gen), 
    ('^(ekonomi)/$', gen), 
    ('^(kulture)/$', gen), 
    ('^(theme)/$', theme), 

Это дает мне: NoReverseMatch в/основной/ошибки.

+0

Что вы подразумеваете под «У меня есть список статей в переменной, называемой lista»? Список идентификаторов статей? Список объектов статьи? Кроме того, как вы * думаете, что код шаблона должен вести себя? Я имею в виду, как бы получился URL-адрес? –

+0

Lista - это список списков, в которых каждый элемент хранит информацию об одной статье: название, источник, ссылка ... Результат должен выглядеть точно так же, как Новости Google: https://news.google.com/.На этой странице, когда нажата ссылка «Просмотреть покрытие в реальном времени», открывается новая страница со списком всех статей Talknig по той же теме. Итак, у меня есть этот список в «основном» шаблоне, он работает нормально, и я хочу, чтобы этот список статей «каким-то образом» переносился на новую страницу (называемую «тема»), стараясь не воссоздавать с самого начала список. Я пытаюсь вызвать функцию темы, с аргументом «lista» – user1680859

+0

Идея в порядке, я считаю, что простой способ сделать это - использовать rss-метод с помощью feedparser – drabo2005

ответ

2

You необходимо реализовать подход, который вы пытаетесь предпринять, не будет работать. Все, что делает тег шаблона url, это создать простую строку - URL-адрес для определенного ресурса. Таким образом, результатом тега может быть строка типа «/ post», «/ post/24» и т. Д. И все. Функция не делает ничего, кроме создания строки URL, и нет места для списка сложных объектов python в простом веб-URL.

Вы также должны понимать, что Интернет, на самом базовом уровне, без гражданства. Вы не можете просто передавать объекты python между запросами, потому что каждый запрос полностью раздельный. Вы можете моделировать сохранение состояния между запросами, используя sessions, но я не думаю, что это правильный инструмент в данном конкретном случае.

Вместо этого вы должны иметь уникальный идентификатор для каждого списка и передавать идентификатор в URL-адресах (в противоположность передаче всего списка в URL-адресе). Затем вы использовали бы идентификатор в своем представлении, чтобы снова получить список и отобразить результат.

+0

Я начинаю с Django и веб-разработкой в ​​целом. Я надеялся, что есть способ передачи данных между разными страницами. Где-то упоминалось ключевое слово «namespaces», и я подумал, что, может быть, кто-то может проинструктировать меня в этом направлении. – user1680859

+0

Это не то, как работает HTTP. Каждый запрос страницы является отдельным. Вы должны хранить свои данные в базе данных и извлекать их, когда запрашивается конкретный ресурс. –

+0

Есть ли способ, которым этот список можно обналичить в ОЗУ? – user1680859

0

Вам необходимо направить urls.py как абсолютные строки точно так же, как тег url в шаблоне. Так что основной будет выглядеть следующим образом:

('^main/$', 'mysite.views.main'), 

Вы можете также определить в верхней путь к вашей модели:

urlpatterns = patterns('mysite.views', 
    ('^main/$', 'main'), 
    … etc 

Но заметьте, вы все равно должны ссылаться на него как строка

+0

Но «главные» функции страницы OK , У меня проблема с «темой» страницы – user1680859

+0

Нет обратного совпадения в/main/говорит мне, что у вас есть проблема с основным URL-адресом в urls.py (также, вы делаете) – yuvi

+0

Это следует из «Обратный для 'mysite.views .theme 'с аргументами ... Я думаю, что у меня проблемы с «темой» url – user1680859

Смежные вопросы