2017-02-08 4 views
1

누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다. 내가 생각할 수있는 거의 모든 것을 시도했지만, 제대로 작동하지 않는 것 같습니다. 내가 장고에 일치하고자하는 URL의 집합있어 :변수가 포함 된 장고 URL 정규식

www.something.com/django/tabs/을
www.something.com/django/tabs/?id=1

기본적으로 www.something.com/django/tabs/를 방문하면 스플래시 페이지로 이동하여 물건을 탐색 할 수 있습니다. 그러나 두 번째 URL을 방문하면 첫 번째 URL에서 찾아 볼 수있는 특정 페이지로 이동합니다. 이 페이지는 데이터베이스에있는 객체를 기반으로 렌더링되므로 ID 번호가있는 이유입니다. URL 정규 표현식에서이 문제를 설명하려고 시도했지만 아무 것도 시도하지 않습니다. 그들은 모두 나를 단지 메인 페이지로 데려 간다.

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^tabs/', include("tabs.urls")), 
] 

앱의 폴더에 urls.py에서

가 :

urlpatterns = [ 
    url(r'\?id=\d+$', tab), 
    url(r'^$', alltabs) 
] 

사람이 너무 친절로하는 것

내가 메인 사이트 폴더 내 urls.py에있는 것입니다 올바른 방향으로 나를 가리켜 주시겠습니까? 미리 감사드립니다!

답변

1

여기에 올바른 방법을 따르지 않습니다. 쿼리 매개 변수는 페이지의 동작을 약간 변경하는 데 사용됩니다. 추가 된 필터, 검색 쿼리 등.

나는 하나의보기 만 있고보기의 쿼리 매개 변수를 기반으로 다른 템플릿을 렌더링하는 것이 좋습니다.

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^tabs/', alltabs), 
] 

alltab보기에 다음과 같이 설정할 수 있습니다.

def alltabs(request): 
    if request.GET.get("id"): 
     id = request.GET.get("id") 
     your_object = MyModel.objects.get(id=id) 

     return render_to_response("tab.html", {"object":your_object}) 
    return render_to_response("alltab.html") 

희망이 나는 것 장고의 정신 :-)

을 말할 것입니다,이 URL이 패턴을 정의 선호 '장고 방법은'아니다

+0

. 고맙습니다! – Taira

1

을하는 데 도움이 뭔가

같은
www.something.com/django/tabs/ 
www.something.com/django/tabs/1/ 
.... 
www.something.com/django/tabs/4/ 

이 경우 앱 내에서 URL 패턴을 정의하면 다음과 같습니다. tabs/urls.py :

귀하의 의견에 63,210
from django.conf.urls import url 

from . import views 

urlpatterns = [ 
    # ex: /tabs/ 
    url(r'^$', views.index, name='index'), 
    # ex: /tabs/5/ 
    url(r'^(?P<tab_id>[0-9]+)/$', views.detail, name='detail'), 
    # ex: /tabs/5/results/ 
    url(r'^(?P<tab_id>[0-9]+)/results/$', views.results, name='results'), 
] 

와 비슷한

탭/views.py :

from django.shortcuts import get_object_or_404, render 
from tabs.models import Tab 

def index(request): 
    return render(request, 'tabs/index.html') 

def detail(request, tab_id): 
    tab = get_object_or_404(Tab, pk=tab_id) 
    return render(request, 'tabs/detail.html', {'tab': tab}) 
... 

당신은 자세한 내용은이 장고 tutorial을 수행 할 수 있습니다 훨씬 더 의미가 있습니다