2016-09-19 3 views
1

데이터베이스에있는 항목의 목록을 가지고 있으며 액세스 할 때 기본 키 시퀀스가 ​​URL에 표시되지 않도록 숨기려고합니다. 그래서 이런 식으로 뭔가를 설정하고 싶은이에ID 시퀀스를 숨기고 피라미드를 사용하여 "친숙한"URL을 제공하려면 어떻게해야합니까?

example.com/post/9854 

을 :

example.com/post/one-two-three-four 

을 분명히 여전히 쿼리에서 기본 키를 사용하는 동안. 이것을 이루기위한 피라미드 방식은 무엇입니까?

+0

제대로 이해한다면 쿠키를 사용하고 싶을 것입니다. 열쇠 값을 가진 쿠키를 설정하십시오. –

답변

1

이 "사용자 친화적 인 URL 단편"은 일반적으로 "슬러그"라고 불리며, 이는 신문이 리드에서 조판 된 시대부터 생각한 것입니다.

일반적으로 수행하는 작업은 슬러그를 저장하는 모델에 추가 필드가 있습니다. 필드는 당신의 슬러그를 생성

class SurrogatePost(Base): 
    id = sa.Integer(primary_key=True) 
    slug = sa.String(unique=True) 
    title = sa.String() 

class NaturalPost(Base) 
    id = sa.String(primary_key=True) 
    title = sa.String() 

(당신도 당신이 "대리 기본 키 대 자연"위대한에서 토론을 :) 어디에 서 있는지에 따라 모델의 기본 키로을 가진 고려할 수 있습니다) 고유 및 색인한다 게시물이 처음 저장 될 때 게시물의 제목이 한 번만 변경되고 제목이 변경된 경우에도 다시 변경되지 않습니다. 이는 SEO 및 링크에 중요합니다.

class Post(Base) 
    ... 
    def __init__(self, title, body): 
     self.slug = generate_slug(title) 
     self.title = title 
     self.body = body 

그런 다음보기 코드에서 기본 키를 사용하는 것처럼 슬러그를 사용하여 데이터베이스에서 게시물을 조회합니다.

def my_view(request): 
     slug = request.matchdict['slug'] 
     post = DBSession.query(Post).filter(Post.slug==slug).one() 
     ... 

당신이 생각하고있는 URL 스키마

성가신 수있는 모든 게시물의 모든 굼벵이가 고유 할 필요 요구 사항을 가지고 있습니다. 기본 키를 조회하는 데 사용됩니다

/posts/123/one-two-three-four 
/posts/123-one-two-three-four 
etc. 

: 당신이 많은 뉴스 웹 사이트를 보면, 당신은 그들이 기본 키 및 슬러그 모두 URL에 존재는 "결합"URL 방식을 사용하는 것을 알 수 있습니다 데이터베이스 및 슬러그 부분의 데이터는 순전히 SEO 및 가독성을위한 것입니다.

관련 문제