2016-11-03 4 views
0

그래서 저는 Python/Django의 연락처로 채워진 테이블을 만들려고합니다. 프로그램을 실행하려고하면 위의 오류 메시지가 나타납니다 ("ImportError : 가져올 수 없습니다 'edit_contact'경로는 정규화 된 경로 여야합니다.)'edit_contact'을 (를) 가져올 수 없습니다. 경로는 정규화 된 경로 여야합니다

여기에 내가 사용중인 views.py가 있습니다 :

from contacts.models import Contact 
#, Address, Telephone 
from django.http import HttpResponse, HttpResponseRedirect 
from django.shortcuts import render_to_response, get_object_or_404, render 
from django.template import Context, loader 
from django.forms.models import inlineformset_factory 
from django.template import loader, Context, RequestContext 
from django.core.urlresolvers import reverse 
from django.contrib.auth.decorators import login_required 
# Create your views here. 

def index(request): 
    #return HttpResponse("Hey! You can see contacts here!") 
    contact_list = Contact.objects.all().order_by('last_name') 
    return render_to_response('contacts/index.html', {'contact_list': contact_list}, 
      RequestContext(request)) 

def detail(request, contact_id): 
    c = get_object_or_404(Contact, pk=contact_id); 

def new_contact(request): 
    print "new_contact" 

    #AddressInlineFormSet = inlineformset_factory(Contact, 

    if request.method == "POST": 
      form = ContactForm(request.POST) 
      if form.is_valid(): 
        contact = form.save() 
      return HttpResponseRedirect(reverse('contacts.views.detail', args=(contact.pk,))) 
    else: 
      form = ContactForm() 

    return render_to_response("contacts/form.html",{ 
      "form": form, 
      }, RequestContext(request)) 

def edit_contact(request, contact_id): 
    contact = Contact.objects.get(pk=contact_id) 
    if request.method == "POST": 
      form = ContactForm(request.POST, instane=contact) 
      if form.is_valid(): 
        form.save() 
        return HttpResponseRedirect(reverse('contacts.views.detail', args=(contact.pk,))) 
    else: 
      form = ContactForm(instance = contact) 
    return render_to_response("contacts/form.html", { 
      "form": form, 
      }, RequestContext(request)) 

이 는 urls.py입니다 :

from django.conf.urls import url 

from . import views 

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^(?P<contact_id>\d+)/$', 'detail', name='contactdetailsurl'), 
    url(r'^new/$',     'new_contact', name='newcontacturl'), 
    url(r'^(?P<contact_id>\d+)/edit/$','edit_contact', name='editcontacturl'), 

] 

그리고 오류가 내 site_base.html 파일에이 줄을 가리키는 :

 <li id="tab_first"><a href=" 
    {% url contacts.views.index %} 
    "><i class="icon-book"></i> Contacts</a></li> 

추가 정보가 필요한 경우 알려주십시오. 감사!

답변

0

오류는보기의 전체 경로 (예 : 'contacts.views.edit_contact') (예 : contacts이라고 가정)를 말합니다.

그러나 URL 패턴의 문자열은 Django 1.8에서 사용되지 않으며 Django 1.10+에서는 지원되지 않습니다. 대신 callables를 사용해야합니다. index URL 패턴에 이미 전화 할 수있는 views.index을 사용하고 있습니다.

다음과 같이 나는 당신의 URL 패턴의 나머지 부분을 변환 할이 :

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^(?P<contact_id>\d+)/$', views.detail, name='contactdetailsurl'), 
    url(r'^new/$', views.new_contact, name='newcontacturl'), 
    url(r'^(?P<contact_id>\d+)/edit/$', views.edit_contact, name='editcontacturl'), 
] 
+0

좋아, 그 제안은 그 오류를 제거하기 위해 노력하지만, 지금은 말한다 오류 받고 있어요 : 리비어 '을'에 대한을 인수 '()'및 키워드 인수 '{}'이 (가) 없습니다. 시도한 패턴은 0 개입니다 : []. 첫 번째 오류가 내 .html 파일에서 동일한 코드 줄을 가리 킵니다. 여기에 무슨 일이 일어나고 있는지, 어떻게 고칠 수 있는지 이해하십니까? – Liz

+0

URL 패턴 (이 경우'{% url '인덱스'%}')을 사용할 때는 * name *을 사용해야합니다. – Alasdair

+0

코드를 최신 상태로 만드는 또 다른 제안 :'render_to_response '대신'render'를 사용하십시오. '반환 렌더링 (요청, 'contacts/index.html', { 'contact_list': contact_list})'. – Alasdair

관련 문제