나는 google에서 템플릿에서 'url'태그를 사용하는 방법에 대한 답변을 많이 보았고 '템플릿에 삽입하고 URL을 원하는보기를 가리킬뿐'이라는 많은 응답을 찾았습니다. 나에게는 기쁨이 없습니다 :( 나는 가능한 모든 순열을 시도했으며 마지막 수단으로 여기에 게시하는 데 의지했습니다.
여기 있습니다. 내 urls.py는 다음과 같습니다.
from django.conf.urls.defaults import *
from login.views import *
from mainapp.views import *
import settings
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Example:
# (r'^weclaim/', include('weclaim.foo.urls')),
(r'^login/', login_view),
(r'^logout/', logout_view),
('^$', main_view),
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
(r'^admin/', include(admin.site.urls)),
#(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': '/home/arthur/Software/django/weclaim/templates/static'}),
(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
)
내 'login'디렉토리의 'views.py'는 다음과 같습니다.
from django.shortcuts import render_to_response, redirect
from django.template import RequestContext
from django.contrib import auth
def login_view(request):
if request.method == 'POST':
uname = request.POST.get('username', '')
psword = request.POST.get('password', '')
user = auth.authenticate(username=uname, password=psword)
# if the user logs in and is active
if user is not None and user.is_active:
auth.login(request, user)
return render_to_response('main/main.html', {}, context_instance=RequestContext(request))
#return redirect(main_view)
else:
return render_to_response('loginpage.html', {'box_width': '402', 'login_failed': '1',}, context_instance=RequestContext(request))
else:
return render_to_response('loginpage.html', {'box_width': '400',}, context_instance=RequestContext(request))
def logout_view(request):
auth.logout(request)
return render_to_response('loginpage.html', {'box_width': '402', 'logged_out': '1',}, context_instance=RequestContext(request))
마지막으로 login_view가 가리키는 main.html은 다음과 같습니다.
<html>
<body>
test! <a href="{% url logout_view %}">logout</a>
</body>
</html>
그렇다면 왜 매번 'NoReverseMatch'가 발생합니까?
* (약간 다른 메모에서 모든 render-to-response 끝에 'context_instance = RequestContext (request)'를 사용해야했습니다. 그렇지 않으면 템플릿에서 {{MEDIA_URL}}을 인식하지 못해 참조 할 수 없기 때문입니다. 모든 css 또는 js 파일. 왜 그런지 잘 모르겠습니다. 나에게 옳지 않은 것 같습니다.) *
context_instance=RequestContext(request)
이 정확합니다. 이는 모든 템플릿에 제공된 컨텍스트 변수에 대한 템플릿 액세스를 허용하는 데 필요합니다. 이것은 기본적으로 모든 일반보기에 대해 수행되지만 사용자 정의보기에서 직접 수행해야합니다.