пользовательская проблема нумерации страниц в шаблоне в Django 1.3 - PullRequest
0 голосов
/ 10 августа 2011

Я делаю галерею, где у меня есть две модели. как показано ниже

class Gallery(models.Model):
    name = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published', auto_now_add=True)
    slug_name = models.CharField(max_length=200)
    def __unicode__(self):
        return self.name

class Image(models.Model):
    gallery = models.ForeignKey(Gallery)
    image = models.ImageField(upload_to='gallery/%Y/%m/%d')
    caption = models.TextField(blank=True)
    up_date = models.DateTimeField(auto_now_add=True)

    def __unicode__(self):
        return self.caption

Теперь у меня есть вид, который будет обслуживать одну страницу изображения. Я получаю изображения, как это

def image_page(request, slug_name, image_id):
    image = Image.objects.get(pk = image_id)
    all = Gallery.objects.get(slug_name = slug_name).image_set.all()
    return render_to_response('gallery/image_page.html',
                              {
                                  'image': image,
                                  'all': all,
                              }, context_instance = RequestContext(request))

По «изображению» я получаю это единственное изображение. "все" я получаю все изображения, которые, вероятно, нужны в представлении для отображения нумерации страниц. Разбиение на страницы означает только следующую и предыдущую кнопку.

Теперь, если эта единственная страница является первой страницей, предыдущая ссылка не должна отображаться аналогично, если кнопка последней страницы не должна отображаться. Кроме того, обе ссылки должны отображаться.

У меня вопрос, как это сделать в шаблоне? Я пытался использовать цикл for не работает, также другой вопрос, как сделать ссылку на следующее / предыдущее изображение, мои URL ищут /gallery/slug_name/image_id.html [примечание: мой идентификатор изображения не растет постепенно, как 1,2, 3, пример У меня 4 изображения в галерее с идентификаторами 4, 6, 7, 8]

Кстати, я пробовал @ murgatroid99 способом. Работает отлично! Но на самом деле я тогда должен использовать URL-адрес, как это

http://localhost:8000/gallery/fourth-gallery/hello?image=2

То, что я хочу, это использовать нумерацию страниц и URL вроде

http://localhost:8000/gallery/1, http://localhost:8000/gallery/2, http://localhost:8000/gallery/3 Etc

Ответы [ 2 ]

0 голосов
/ 11 августа 2011

Вы не должны использовать все как переменную, потому что в Python есть встроенная функция. Смотрите здесь http://docs.python.org/library/functions.html#all

Вы можете просто использовать нумерацию django, чтобы показать изображения. В вашем случае, размер страницы будет 1, так как вы показываете 1 объект изображения на странице. Django pagination имеет встроенную функциональность, чтобы найти, где следующий или предыдущий доступен или нет.

0 голосов
/ 10 августа 2011

Лучший способ, вероятно, состоит в том, чтобы представление генерировало страницы на основе информации в запросе, а затем просто шаблон отображал страницу, возвращенную представлением. Хорошее объяснение и пример можно найти в документации Django .

...