2011-08-10 1 views
0

두 모델이있는 갤러리를 만들고 있습니다. django 1.3 템플릿의 사용자 정의 페이지 매김 문제

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)) 

"image"로 나는 그 하나의 이미지를 얻는다. "all"은 아마도 페이지 매김을 표시하는 데 필요한 모든 이미지를 얻고있을 것입니다. 페이지 매김은 다음 및 이전 버튼 만 의미합니다.

이제이 단일 페이지가 첫 번째 페이지 인 경우 이전 페이지 링크는 마지막 페이지 다음 버튼이 표시되지 않아야하는 것과 유사하게 표시되지 않아야합니다. 그런 다음 두 링크가 모두 표시되어야합니다.

제 질문은 템플릿에서 어떻게하는 것입니까? for 루프를 사용해 보았는데, 또 다른 질문으로 다음/이전 이미지로 링크하는 방법 /gallery/slug_name/image_id.html [참고 : 내 이미지 ID는 점차적으로 1,2,3, 예와 같이 커지지 않습니다. 나는 4, 6, 7, 8의 ID를 가지는 갤러리에 4 개의 이미지가 있습니다.

BTW 나는 murgatroid99 방식을 시도했습니다. 그것은 위대한 작품! 그러나 실제로 나는 다음과 같은 URL을 사용해야이

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

내가 원하는 것은보기가 정보를 기반으로 페이지를 생성하도록 아마 것

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

답변

0

가장 좋은 방법은 같은 페이지 매김하고 URL을 사용하는 것입니다 그런 다음 템플릿이 뷰에 의해 반환 된 페이지를 렌더링하도록합니다. 좋은 설명과 예는 Django documentation에서 찾을 수 있습니다.

+0

하지만 다른 페이지에서이 링크를 어떻게 연결해야합니까? 이제 내가하고있는 일은 FB 스타일 갤러리 시스템입니다. 첫 번째 페이지는 모든 갤러리를 보여줍니다. 갤러리를 클릭하면 해당 갤러리의 모든 이미지가 표시 될 페이지가 열립니다. 이 이미지 중 하나는 단일 이미지 페이지에 연결됩니다. 그것의 어떤 이미지 페이지 페이지 매김 연결에서 작동 할 때 – themunna

0

python에 내장 함수가 있기 때문에 all을 변수로 사용하지 마십시오. 여기를 참조하십시오 http://docs.python.org/library/functions.html#all

이미지를 표시하려면 django의 페이지 매김을 사용할 수 있습니다. 귀하의 경우 페이지 당 1 개의 이미지 객체를 표시하므로 페이지 크기는 1이됩니다. Django 페이지 매김에는 다음 또는 이전 위치를 사용할 수있는 기능이 내장되어 있습니다.

+0

그렇습니다 나는 이미 그것을했다. 문제는 페이지 매김을 사용할 때 [http : // localhost : 8000/gallery/fourth-gallery/hello? image = 2 ]와 같은 URL을 얻는 것입니다. 하지만 다음 버튼을 클릭 할 때 http : // localhost : 8000/gallery/fourth-gallery/2 /와 페이지 매김은 2, 3, 4 등처럼 작동해야합니다. – themunna