Django URLS, 루트를 앱에 매핑하는 방법은 무엇입니까?
저는 django를 처음 접했지만 다른 프레임 워크를 사용하는 Python 및 Java 웹 프로그래밍 경험이 있습니다. 나는 나 자신을 멋진 작은 장고 앱으로 만들었지 만, www.mysite.com/myapp이 아닌 www.mysite.com과 일치하는 것 같지 않습니다.
현재 앱에서 분리되지 않은 내 urls.conf에 URL과 뷰를 정의했습니다.
urlpatterns = patterns('myapp.views',
(r'^myapp/$', 'index'),
(r'^myapp/(?P<some_id>\d+)/global_stats/$', 'global_stats'),
(r'^myapp/(?P<some_id>\d+)/player/(?P<player_id>\d+)/$', 'player_stats'),
)
이 모든 것이 매력처럼 작동합니다. 누군가가 www.mysite.com/myapp에 가면 내 색인보기에 도달하여 http가 내 "올바른"기본 URL로 리디렉션됩니다.
그렇다면 (r '^ myapp / $', 'index')와 동일하지만 / myapp없이 패턴을 추가하려면 어떻게해야합니까? 즉, www.mysite.com이면 충분할까요?
나는 이것이 매우 기본적인 것들이라고 생각할 것입니다 ... 나는 다음과 같은 줄을 추가하려고했습니다.
(r'^$', 'index'),
그러나 이것은 나를 루프에 던졌습니다 ...
장고 전문가가 나를 위해 이것을 명확히 할 수 있기를 바랍니다!
이상하게 들립니다.
귀하의 최근 시도는 작동하지만 일반적으로 수행하는 작업은
urlpatterns = patterns('',
(r'^$', lambda r: HttpResponseRedirect('myapp/')),
...
)
새 앱 추가를 시작할 때 더 잘 확장됩니다.
이 질문이 2 년 전에 요청되었다는 것을 알고 있지만 동일한 문제에 직면하여 해결책을 찾았습니다.
프로젝트에서 urls.py
:
urlpatterns = patterns('',
url(r'^', include('my_app.urls')), #NOTE: without $
)
에서 my_app.urls.py
:
urlpatterns = patterns('',
url(r'^$', 'my_app.views.home', name='home'),
url(r'^v1/$', 'my_app.views.v1', name='name_1'),
url(r'^v2/$', 'my_app.views.v2', name='name_2'),
url(r'^v3/$', 'my_app.views.v3', name='name_3'),
)
django 2.0에 대한 답을 보지 못했기 때문에 제공 할 것이라고 생각했습니다. ''
루트 URL 로 사용해야 합니다. 다음은 django 2.0 문서 의 예입니다.
urlpatterns = [
path('', main_views.homepage),
path('help/', include('apps.help.urls')),
path('credit/', include(extra_patterns)),
]
빈 원시 정규식을 넣으십시오 : r ''
나는 여기서 테스트했고 완벽하게 작동했습니다.
urlpatterns = patterns('',
url(r'', include('homepage.urls')),
url(r'^homepage/', include('homepage.urls')),
url(r'^admin/', include(admin.site.urls)),
)
도움이 되었기를 바랍니다.
대답이 늦었다는 것을 알고 있지만 최근에 사냥에 공평하게 몫을했습니다. 이것은 내가 프로젝트 urls.py에서 CBV ..로 시도한 것입니다.
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', include('app_name.urls', namespace='app_name')),
]
추신 : 항상 네임 스페이스를 사용하는 것이 좋습니다. 나중에 좋은 이점을 제공합니다.
앱 urls.py에서
urlpatterns = [
url(r'^$', views.IndexPageView.as_view(), name='index'),
]
또한 내 도메인의 루트가 하위 앱보기를 직접 가리 키도록하고 싶었습니다.
처음에는 다음 명령으로 하위 앱을 만들었습니다.
python3 manage.py startapp main offer_finder/main
귀하의 경우에는 다음과 같습니다.
python3 manage.py startapp myApp project/somedirectory/myApp
디렉토리가 있는지 확인하십시오. mkdir -p project/somedirectory/myApp
이것은 내 프로젝트 구조입니다. 프로젝트 구조
제 경우에는 다음 디렉토리가 있습니다.
offer_finder_project/offer_finder/main # sub app
offer_finder_project/offer_finder/ # main source directory
에 offer_finder_project/offer_finder/urls.py
나는이 코드를 가지고 :
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('offer_finder.main.urls')),
]
그리고 offer_finder_project/offer_finder/main/urls.py
나는이 코드가 있습니다.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
]
그리고 offer_finder_project/offer_finder/main/views.py
파일에는 테스트 코드가 포함되어 있습니다.
from django.http import HttpResponse
def index(request):
return HttpResponse("TEST app index")
이렇게하면 루트 도메인에 대한 요청이 하위 앱으로 전달됩니다. 바라건대 이것은 누군가를 돕는다. 이 코드는 Django 2.1.4에서 테스트되었습니다.
참조 URL : https://stackoverflow.com/questions/7580220/django-urls-how-to-map-root-to-app
'programing' 카테고리의 다른 글
androidX 라이브러리에없는 BottomSheetBehavior (0) | 2021.01.16 |
---|---|
jquery로 요소의 클래스 이름을 변경하는 방법 (0) | 2021.01.16 |
운영자 '??' (0) | 2021.01.16 |
.emacs에 무엇이 있습니까? (0) | 2021.01.16 |
중복을 찾기 위해 T-SQL 코드를 얻는 방법은 무엇입니까? (0) | 2021.01.16 |