2011-06-12 12 views
8

मैं एक Django ट्यूटोरियल का अनुसरण कर रहा हूं और अचानक जब मैं http://127.0.0.1:8000/admin/ तक पहुंचने का प्रयास करता हूं तो यह मुझे टेम्पलेट सिंटैक्स त्रुटि देता है। व्यवस्थापक पर/Django TemplateSyntaxError

TemplateSyntaxError/

ViewDoesNotExist पकड़ा जबकि प्रतिपादन: मॉड्यूल polls.views में की कोशिश की परिणाम है। यह त्रुटि थी: 'मॉड्यूल' ऑब्जेक्ट में कोई विशेषता 'परिणाम'

यह इस लाइन पर प्रकाश डाला गया: {% url 'django-admindocs-docroot' docsroot% के रूप में}

व्यवस्थापक पृष्ठ मैं जब तक एक आकर्षण की तरह काम किया ट्यूटोरियल के भाग 3 में भाग लिया और यूआरएल के साथ गड़बड़ कर दिया, हालांकि मैंने ऐसा ठीक किया जैसा उन्होंने कहा था, इसलिए मुझे संदेह है कि यह समस्या है।

urls.py:

from django.conf.urls.defaults import * 

from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    (r'^polls/$', 'polls.views.index'), 
    (r'^polls/(?P<poll_id>\d+)/$', 'polls.views.detail'), 
    (r'^polls/(?P<poll_id>\d+)/results/$', 'polls.views.results'), 
    (r'^polls/(?P<poll_id>\d+)/vote/$', 'polls.views.vote'), 
    (r'^admin/', include(admin.site.urls)), 
) 

admin.py:

from polls.models import Poll 
from polls.models import Choice 
from django.contrib import admin 

class ChoiceInline(admin.TabularInline): 
    model = Choice 
    extra = 0 

class PollAdmin(admin.ModelAdmin): 
    fieldsets = [ 
     (None, {'fields': ['question']}), 
     ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), 
    ] 
    inlines = [ChoiceInline] 
    list_display = ('question', 'pub_date') 
    list_filter = ['pub_date'] 
    search_fields = ['question'] 
    date_hierarchy = 'pub_date' 

admin.site.register(Poll, PollAdmin) 

views.py:

from django.http import HttpResponse 
from polls.models import Poll 
from django.template import Context, loader 

def index(request): 
    latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5] 
    t = loader.get_template('polls/index.html') 
    c = Context({ 
     'latest_poll_list': latest_poll_list, 
    }) 
    return HttpResponse(t.render(c)) 

def detail(request, poll_id): 
    return HttpResponse("You're looking at poll %s. " % poll_id) 

def vote(request, poll_id): 
    return HttpResponse("You're voting on poll %s." % poll_id) 
+2

आपको मतदान/views.py फ़ाइल पोस्ट करें। ऐसा लगता है कि त्रुटि –

+0

है, मैंने def.py को def.py जोड़ा और यह काम किया, लेकिन क्यों? क्या django बस इसे अनदेखा नहीं कर सकता? कभी-कभी django में कुछ चीजें बस समझ में नहीं आती हैं। – Lockhead

+0

उम, यह सही समझ में आता है। जब कोई यूआरएल/पोल/1234/परिणाम/फ़ंक्शन "परिणाम" पर जाता है तो आपके views.py से कॉल किया जाता है और तर्क आईडी इसे पास कर दी जाती है। वह फ़ंक्शन तब आपके टेम्पलेट को प्रस्तुत करता है और इसे उपयोगकर्ता को देता है। यह है कि Django –

उत्तर

15
Caught ViewDoesNotExist while rendering: Tried results in module polls.views. 
Error was: 'module' object has no attribute 'results' 

काफी आप सभी की जरूरत है यही कारण है कि। TemplateSyntaxError को अनदेखा करें, यह टेम्पलेट से बिल्कुल संबंधित नहीं है। Django आपको बता रहा है कि आपके पास यह नहीं है:

def results(request): 
    # do something 

आपके विचारों में। जब आप यूआरएल लिखना शुरू करते हैं और वास्तव में उन कार्यों को संदर्भित करते हैं, तो आप ViewDoesNotExist त्रुटियों को प्राप्त करेंगे, जो वास्तव में मौजूद नहीं हैं, इसलिए सुनिश्चित करें कि आप प्रगति करते हैं कि आप या तो सुनिश्चित करते हैं कि आपके पास ऐसे स्टब फ़ंक्शंस हैं जो केवल मूल 200 लौटाते हैं, या आप उन यूआरएल को तब तक टिप्पणी करें जब तक आपको उनकी आवश्यकता न हो।

तकनीकी रूप से यह एक पाइथन त्रुटि का विस्तार है। यदि आप भाग गए:

$ python manage.py shell 
>>> from poll import views 
x = views.results 

आपको AttributeError मिल जाएगा।

जब से तुम पूछा क्यों, अगर आप Django/core/urlresolvers.py में देखने के लिए आप लाइन देखेंगे:

_callable_cache = {} # Maps view and url pattern names to their view functions. 

तो मूल रूप से दृश्य मैपिंग (यूआरएल या जो कुछ भी) की एक कैश कार्यों के लिए एक hashmap के रूप में किया जाता है (शब्दकोश)। यह इस समारोह से निर्माण किया है:

def _get_callback(self): 
    if self._callback is not None: 
     return self._callback 
    try: 
     self._callback = get_callable(self._callback_str) 
    except ImportError, e: 
     mod_name, _ = get_mod_func(self._callback_str) 
     raise ViewDoesNotExist("Could not import %s. Error was: %s" % (
                  mod_name, str(e))) 
    except AttributeError, e: 
     mod_name, func_name = get_mod_func(self._callback_str) 
     raise ViewDoesNotExist("Tried %s in module %s. Error was: %s" % (
                func_name, mod_name, str(e))) 
    return self._callback 
callback = property(_get_callback) 

कौन सा प्रत्येक कॉलबैक का मूल्यांकन करता है यह मौजूद है की जाँच करने के (नई-पंक्तियों मेरे हैं)।

+0

धन्यवाद! अब मैं देखता हूं कि इसे क्यों नजरअंदाज नहीं किया गया है। – Lockhead