인수 '()'및 키워드 인수 '{}'가있는 '*'에 대한 반전을 찾을 수 없습니다.
렌더링하는 동안 예외가 발생했습니다.
인수 '()'및 키워드 인수 '{}'이 (가)있는 'products.views.'filter_by_led'의 역방향을 찾을 수 없습니다.
products.views.filter_by_led
셸에서 성공적으로 가져올 수 있었고 경로가 정확해야합니다.
다음은 urls.py입니다.
(r'^led-tv/$', filter_by_led ),
오류가 생성되는 위치입니다.
href="{% url products.views.filter_by_led %}">
동일한 파일에서 제대로 작동하기 때문에 이해할 수 없습니다.
{% url products.views.lcd_screen_size screen_size=50 %}
다음은 함수 정의입니다.
def filter_by_led(request):
Django가 함수가 해당 함수에 대한 Reverse를 찾을 수 없다고 생각하는 이유를 이해할 수 없습니다.
모든 *.pyc
파일을 삭제하고 Apache를 다시 시작했습니다.
내가 도대체 뭘 잘못하고있는 겁니까?
머릿속에서 생각할 수있는 세 가지가 있습니다.
- 이름이 지정된 URL을 사용 했습니다. 어쨌든 더 강력하고 유지 관리가 쉽습니다.
django.core.urlresolvers.reverse
더 나은 오류를 위해 명령 줄에서 사용해보십시오.>>> from django.core.urlresolvers import reverse >>> reverse('products.views.filter_by_led')
해당보기를 가리키는 URL이 두 개 이상 있는지 확인하세요.
역방향 쉘 호출 (위에서 언급했듯이)은 이러한 문제를 디버그하는 데 매우 좋지만 두 가지 중요한 조건이 있습니다.
- 당신이 있어야 한다는 인수를 제공 일치 어떤 인수 뷰 요구
- 이러한 인수 는 정규 표현식 패턴과 일치해야합니다.
예, 논리적입니다. 예, 역방향 은 예외 만 throw하고 더 이상 힌트를 제공하지 않기 때문에 혼란 스럽습니다 .
URL 패턴의 예 :
url(r'^cookies/(?P<hostname>[^/]+)/(?P<url_id>\d+)/$', 'register_site.views.show_cookies', name='show_cookies'),
그리고 쉘에서 일어나는 일 :
>>> from register_site.views import show_cookies
>>> reverse(show_cookies)
NoReverseMatch: Reverse for 'register_site.views.show_cookies' with arguments '()' and keyword arguments '{}' not found.
내가 인수를 제공하지 않았기 때문에 작동하지 않습니다.
>>> reverse('show_cookies', kwargs={'url_id':123,'hostname': 'aaa'})
'/cookies/aaa/123'
이제 효과가 있었지만 ...
>>> reverse('show_cookies', kwargs={'url_id':'x','hostname': 'www.dupa.com'})
NoReverseMatch: Reverse for 'show_cookies' with arguments '()' and keyword arguments '{'url_id': 'x', 'hostname': 'www.dupa.com'}' not found.
이제 url_id 가 정규 표현식 (예상 숫자, 제공된 문자열)과 일치하지 않았기 때문에 작동 하지 않았습니다.
위치 인수와 키워드 인수 모두에 reverse 를 사용할 수 있습니다 . 구문은 다음과 같습니다.
reverse(viewname, urlconf=None, args=None, kwargs=None, prefix=None, current_app=None)
URL 템플릿 태그에 관해서는 재미있는 점이 있습니다. Django 문서 는 인용 된 뷰 이름을 사용하는 예를 제공합니다.
{% url 'news.views.year_archive'yearvar %}
그래서 HTML 템플릿에서 비슷한 방식으로 사용했습니다.
{% url 'show_cookies'hostname = u.hostname url_id = u.pk %}
그러나 이것은 나를 위해 작동하지 않았습니다. 그러나 예외 메시지는 무엇이 잘못되었을 수 있는지에 대한 힌트를주었습니다. 뷰 이름 주위에 큰 따옴표가 있습니다.
인수가있는 ''show_cookies ''의 반대 ...
따옴표를 제거 했을 때 작동하기 시작했습니다 .
{% url show_cookies hostname = u.hostname url_id = u.pk %}
그리고이 되어 혼란.
보기 이름을 작은 따옴표로 묶어야합니다.
{% url 'viewname' %}
대신에
{% url viewname %}
비슷한 문제가 있었고 해결책은 '$'(문자열 끝) 문자를 올바르게 사용하는 것입니다.
내 기본 url.py는 다음과 같습니다 ($ 문자에 유의하십시오).
urlpatterns = [
url(r'^admin/', include(admin.site.urls )),
url(r'^$', include('card_purchase.urls' )),
]
내 card_purchases 앱에 대한 내 url.py는 다음과 같이 말했습니다.
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^purchase/$', views.purchase_detail, name='purchase')
]
나는 '$'를 두 번 사용했습니다. 따라서 간단한 변경이 작동했습니다.
urlpatterns = [
url(r'^admin/', include(admin.site.urls )),
url(r'^cp/', include('card_purchase.urls' )),
]
두 번째 URL의 변경 사항을 확인하십시오! 내 card_purchases 앱의 url.py는 다음과 같습니다.
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^purchase/$', views.purchase_detail, name='purchase')
]
이 외에도 이름이 지정된 URL 주변의 따옴표가 중요하다는 것을 확인할 수 있습니다!
누군가에게 도움이되는 경우 비슷한 문제가 있었고 오류는 두 가지 이유 때문입니다.
Not using the app's namespace before the url name
{% url 'app_name:url_name' %}
Missing single quotes around the url name (as pointed out here by Charlie)
{% url 'polls:create' poll.id %}
I don't think you need the trailing slash in the URL entry. Ie, put this instead:
(r'^led-tv$', filter_by_led ),
This is assuming you have trailing slashes enabled, which is the default.
'Nice programing' 카테고리의 다른 글
C # TextBox의 맨 아래로 스크롤 (0) | 2020.12.04 |
---|---|
VC ++ 프로젝트에서 유니 코드를 끄려면 어떻게합니까? (0) | 2020.12.04 |
MySQL의 Intersect 대안 (0) | 2020.12.04 |
목록의 수학 기호 (0) | 2020.12.04 |
PHP를 통해 SSH 명령을 실행하는 방법 (0) | 2020.12.04 |