2013-08-06 39 views
18

Tôi là người mới bắt đầu ở django và tôi gặp nhiều lỗi khi sử dụng mô-đun mẫu từ django. Các công trình sau đây từ vỏ python:Lỗi khi sử dụng django.template

from django import template 
t = template.Template('My name is {{ name }}.') 

Khi tôi sử dụng mã này, tôi nhận được lỗi sau:

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/usr/lib/python2.7/site-packages/django/template/base.py", line 123, in __init__ 
if settings.TEMPLATE_DEBUG and origin is None: 
File "/usr/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__ 
self._setup(name) 
File "/usr/lib/python2.7/site-packages/django/conf/__init__.py", line 46, in _setup 
% (desc, ENVIRONMENT_VARIABLE)) 
django.core.exceptions.ImproperlyConfigured: Requested setting TEMPLATE_DEBUG,but   
settings are not configured. You must either define the environment variable 
DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. 

Liều bất cứ ai có một ý tưởng về lỗi này?

Trả lời

16

Bạn không thể truy cập và chạy các dự án django từ trình bao python. Django không biết bạn muốn làm việc với dự án nào.

Bạn phải làm một trong những điều sau:

1. python manage.py shell 
2. Set DJANGO_SETTINGS_MODULE environment variable in your OS to mysite.settings 
3. Use setup_environ in the python interpreter: 
    from django.core.management import setup_environ 
    from mysite import settings 
    setup_environ(settings) 

Người đầu tiên là dễ nhất và phương pháp tốt nhất. Chạy mã của bạn trong vỏ django.

+1

Cảm ơn bạn đã giải pháp. – DearPython

+0

Xin lỗi vì đã làm sống lại điều này, nhưng làm cách nào để tôi đi với lựa chọn số 2 và lựa chọn số 3? – Nogurenn

1

Tôi cũng gặp vấn đề tương tự.

Điểm chính là trong sách django 2, đoạn mã này không được cho phép người dùng đưa vào Python IDLE bắt đầu từ python.exe của bạn (có lẽ trong C: \ Program Files \ Python33 trên Windows).

Thay vào đó, nó chỉ hiển thị đoạn mã trông như thế nào. Giải pháp chỉ đơn giản là chạy 'cmd' và thay đổi thư mục thành 'mysite' của bạn và chạy

python manage.py shell

để đảm bảo rằng 'mysite.settings.py' được sử dụng.

15

Nếu bạn muốn sử dụng mẫu hệ thống mà không vỏ django, bạn có thể làm:

from django.conf import settings 
settings.configure() 

và sau này mã của bạn

t = template.Template('My name is {{ name }}.') 
+0

Cảm ơn bạn đã giải pháp sạch này. – Thierry

1

Tất nhiên câu trả lời của @ Sudipta của hoạt động chính xác nhưng (chỉ trong tương lai) để giải thích, bạn cũng có thể truy cập phần "Creating Template Objects" -> "A special Python prompt" trong Django book

0

Để khắc phục sự cố này, bạn cần chạy nó trong python manage.py shell thay vì chỉ python.

Lý do: Vâng, nhiều phần của Django dựa vào cài đặt và bạn sẽ không thể sử dụng chúng cho đến khi biết tệp cài đặt nào sẽ sử dụng. Khi bạn chạy nó trên python manage.py shell, Django biết tệp cài đặt nào cần sử dụng và thực hiện công việc cho bạn.