2017-12-19 8 views
0

Django 프로젝트를 Django 2.0에 작성했습니다.Django 관리자는 URL 패턴이 모델 이름과 같을 때 뷰 템플릿을로드합니다.

다른 이상한 동작이 Djangourlpatterns으로 나타났습니다.

I가 Starred(models.Model)

동일한로 내의 앱 starrednotes 모델이 난 모델명

urlpatterns = [ 
    url(r'^starred/$', StarredNotes.as_view(), name='starred'), 
    url(r'^shared/$', SharedNotes.as_view(), name='shared'), 
] 
동일 경로 패턴을위한 urlpattern 구성한 Shared(models.Model)

sharednotes 이내의 경우

StarredNotes

입니다.

의 URL 설정은 위의

http://example.com/notes/shared 
http://example.com/notes/starred 

을 사용하여 액세스하지만

http://example.com/admin/sharednotes/shared 
http://example.com/admin/starrednotes/starred 

로 URL과 함께 admin에서이 두 모델에 접근하고있을 때이 두 링크는 ​​StarredNotes에 템플릿 설정을로드 admin 템플릿 대신 SharedNotes 클래스가 필요합니다.

+0

장고를 다시 설치하려고 했습니까? 때로는 이상한 문제를 해결할 수 있습니다. – mazulo

+0

다시 설치하려고했습니다. 성공하지 못했습니다. –

+0

인쇄 화면을 추가 할 수 있습니까? –

답변

0

왜 이렇게 행동하는지 이해할 수 없습니다. 그것은 장고의 제한 사항이거나 장고의 버그입니다.

어쨌든 여기에서 두 가지 방법으로 제거 할 수 있습니다.

1. 변경 urlpattern

변경 URL 패턴과 모델 이름이 아닌 뭔가 패턴을 교체합니다. 내 경우에는 이것이 내 urlpatterns의 모습입니다.

urlpatterns = [ 
    url(r'^starred/$', StarredNotes.as_view(), name='starred'), 
    url(r'^shared/$', SharedNotes.as_view(), name='shared'), 
] 

2. 변경 모델 이름

이 아니다 권장되는 방법하지만 URLPATTERN 모델보다 더 중요한 경우에만 뭔가 다른 모델의 이름을 바꿀 수 있습니다. 모델 이름을 변경하면 다른 많은 장소도 변경해야 할 수 있습니다.

class SharedNote(models.Model): 
    # model fields 

class StarredNote(models.Model): 
    # model fields 
관련 문제