Django模板模块导入错误

时间:2017-09-14 23:16:07

标签: python django

使用Django 1.9.5和Python 3.

导航到网址后,我收到以下错误:

from bs4 import BeautifulSoup
from requests import get

soup = BeautifulSoup(get('https://your_url_here').text, "html.parser")

for i in soup.find_all('div', attrs={'class':"stationContainer"}):
    print str(i).split('</form>')[1].split('<br/><br/>')[0].strip()

错误似乎来自导入行。检查语法并尝试在DIRS的TEMPLATES下明确提供路径,但结果相同。有没有人遇到类似的问题?发现了一些类似的问题,但是用不同的语言。

模板的文件夹结构:name_of_app / templates / inner_folder / html_file

  

音乐/模板/音乐/ index.html中

views.py

ImportError at /music/
No module named 'django.templates'
Request Method: GET
Request URL:    http://localhost:8000/music/
Django Version: 1.9.5
Exception Type: ImportError
Exception Value:    
No module named 'django.templates'
Exception Location: D:\Program Files (x86)\Python\lib\importlib\__init__.py in import_module, line 126
Python Executable:  D:\Program Files (x86)\Python\python.exe
Python Version: 3.5.0
Python Path:    
['C:\\Users\\ang\\Desktop\\website',
 'D:\\Program Files (x86)\\Python\\lib\\site-packages\\django-1.9.5-py3.5.egg',
 'D:\\Program Files (x86)\\Python\\python35.zip',
 'D:\\Program Files (x86)\\Python\\DLLs',
 'D:\\Program Files (x86)\\Python\\lib',
 'D:\\Program Files (x86)\\Python',
 'D:\\Program Files (x86)\\Python\\lib\\site-packages']

settings.py

from django.http import HttpResponse
from django.template import loader # error gone if i remove this line
from .models import Album


def index(request):
    all_albums = Album.objects.all()
    template = loader.get_template('music/index.html')
    context = {
        'all_albums': all_albums
    }
    return HttpResponse('test test') 

3 个答案:

答案 0 :(得分:3)

这看起来像程序员最大的克星:一个错字。您可以在第二个代码段中间看到对django.templates...的引用,但您的第二行是从django.template导入。

编辑:在我的测试中,shell中的导入失败,context_processors中的错误引用将在浏览器中失败。

答案 1 :(得分:2)

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.contrib.auth.context_processors.auth',
                'django.template.context_processors.debug',
                'django.template.context_processors.i18n',
                'django.template.context_processors.media',
                'django.template.context_processors.static',
                'django.template.context_processors.tz',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

答案 2 :(得分:0)

尝试使用此方法使用模块django.shortcurt.render()呈现模板:

from django.shortcuts import render
from .models import Album


def index(request):
    all_albums = Album.objects.all()
    context = {
        'all_albums': all_albums
    }
    return render(request, 'music/index.html',context=context)