使用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')
答案 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)