- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 Django 构建一个静态站点生成器(因为它足智多谋),现在我的问题是处理应该将我的静态站点内容构建到目录中的 Django 命令。显然我的“NoneType”对象没有属性“split”,但我不知道那个“NoneType”对象是什么。
(thisSite) C:\Users\Jaysp_000\thisSite\PROJECTx>python prototype.py build
Traceback (most recent call last):
File "prototype.py", line 31, in <module>
execute_from_command_line(sys.argv)
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\core\management\__init__.py",
line 338, in execute_from_command_line
utility.execute()
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\core\management\__init__.py",
line 330, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\core\management\base.py", lin
e 390, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\core\management\base.py", lin
e 441, in execute
output = self.handle(*args, **options)
File "C:\Users\Jaysp_000\thisSite\PROJECTx\sitebuilder\management\commands\build.py", li
ne 38, in handle
response = this_client_will.get(the_page_url)
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\test\client.py", line 500, in
get
**extra)
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\test\client.py", line 303, in
get
return self.generic('GET', path, secure=secure, **r)
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\test\client.py", line 379, in
generic
return self.request(**r)
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\test\client.py", line 466, in
request
six.reraise(*exc_info)
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\utils\six.py", line 659, in r
eraise
raise value
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\core\handlers\base.py", line
132, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Jaysp_000\thisSite\PROJECTx\sitebuilder\views.py", line 35, in page
return render(request, 'page.html', context)
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\shortcuts.py", line 67, in re
nder
template_name, context, request=request, using=using)
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\template\loader.py", line 99,
in render_to_string
return template.render(context, request)
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\template\backends\django.py",
line 74, in render
return self.template.render(context)
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\template\base.py", line 208,
in render
with context.bind_template(self):
File "C:\Python34\Lib\contextlib.py", line 59, in __enter__
return next(self.gen)
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\template\context.py", line 23
5, in bind_template
updates.update(processor(self.request))
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\template\context_processors.p
y", line 56, in i18n
context_extras['LANGUAGE_BIDI'] = translation.get_language_bidi()
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\utils\translation\__init__.py
", line 177, in get_language_bidi
return _trans.get_language_bidi()
File "C:\Users\Jaysp_000\thisSite\lib\site-packages\django\utils\translation\trans_real.
py", line 263, in get_language_bidi
base_lang = get_language().split('-')[0]
AttributeError: 'NoneType' object has no attribute 'split'
看来我的问题出在我的命令文件上,我称之为build
。回溯还会显示我的 views
文件,该文件本身运行良好(也就是说,我的 html 文件可以在本地服务器上正常提供),但无论如何我都会包含它。
build.py
import os, shutil
from django.conf import settings
from django.core.management import call_command
from django.core.management.base import BaseCommand
from django.core.urlresolvers import reverse
from django.test.client import Client
def get_pages():
for name in os.listdir(settings.STATIC_PAGES_DIRECTORY):
if name.endswith('.html'):
yield name[:-5]
class Command(BaseCommand):
help = 'Build static site output.'
def handle(self, *args, **options):
"""Request pages and build output."""
if os.path.exists(settings.SITE_OUTPUT_DIRECTORY):
shutil.rmtree(settings.SITE_OUTPUT_DIRECTORY)
os.mkdir(settings.SITE_OUTPUT_DIRECTORY)
os.makedirs(settings.STATIC_ROOT)
call_command('collectstatic', interactive=False, clear=True, verbosity=0)
this_client_will = Client()
for page in get_pages():
the_page_url = reverse('page',kwargs={'slug': page}) # PROBLEM SEEMS TO GENERATE STARTING HERE
response = this_client_will.get(the_page_url)
if page == 'index.html':
output_dir = settings.SITE_OUTPUT_DIRECTORY
else:
output_dir = os.path.join(settings.SITE_OUTPUT_DIRECTORY, page)
os.makedirs(output_dir)
with open(os.path.join(output_dir, 'index.html'), 'wb', encoding='utf8') as f:
f.write(response.content)
views.py
import os
from django.conf import settings
from django.http import Http404
from django.shortcuts import render
from django.template import Template
from django.utils._os import safe_join
# Create your views here.
def get_page_or_404(name):
"""Returns page content as a Django template or raise 404 error"""
try:
file_path = safe_join(settings.STATIC_PAGES_DIRECTORY, name)
except ValueError:
raise Http404("Page Not Found")
else:
if not os.path.exists(file_path):
raise Http404("Page Not Found")
with open(file_path,"r", encoding='utf8') as f:
the_page = Template(f.read())
return the_page
def page(request, slug='index'):
""" Render the requested page if found """
file_name = '{0}.html'.format(slug)
page = get_page_or_404(file_name)
context = {'slug': slug, 'page': page}
return render(request, 'page.html', context) # THE TRACEBACK POINTS AT THIS LINE, TOO
为了以防万一它变得有用,这是我的 urls.py:
from django.conf.urls import include, url
urlpatterns = [
url(r'^page/(?P<slug>[-\w]+)/$', 'sitebuilder.views.page', name='page'),
url(r'^page$', 'sitebuilder.views.page', name='homepage'),
]
我觉得这很令人沮丧,主要是因为这个问题似乎与 reverse() 函数有关,正如在 build 模块中看到的那样,从我记事起,我就没有愉快地使用过该函数,但我不知道这是否真的是我的问题。有人可以帮我弄清楚我的问题出在哪里以及如何解决吗(如果您有任何提示)?将不胜感激。
最佳答案
base_lang = get_language().split('-')[0]
这一行是 Django 1.8 中的一个错误。它作为 1.8.1 的一部分被修复:
Prevented TypeError in translation functions check_for_language() and get_language_bidi() when translations are deactivated (#24569).
您应该升级到最新的 1.8.x 版本 1.8.8。在撰写本文时。这将修复此错误和其他错误。
次要版本仅包含错误修复和安全补丁,因此无论您使用的是什么主要版本,您都应该始终升级到最新的次要版本。
关于python - Django: AttributeError: 'NoneType' 对象没有属性 'split',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34572553/
在 R 中,您可以使用 strsplit在分隔符( split )上分割向量的函数如下: x <- "What is this? It's an onion. What! That's| Well
我的 .split(); 方法有问题。 我称这个函数为: get_content_ajax("html/settings.html", "#ajax", 1, "Settings page have
我是Elixir的新手。我正在尝试对字符串split的基本操作,如下所示 String.split("Awesome",""); 根据elixir document,它应该根据提供的模式split字符
当我使用 =arrayformula(split(input!G2:G, ",")) 时,为什么拆分公式没有扩展到整个列? 我只得到输入的结果!G2 单元格,而不是 G 列中的其余部分。其他公式如 =
我正在尝试制作一个名为 core-splitter 的元素,该元素在 1.0 中已弃用,因为它在我们的项目中起着关键作用。 如果您不知道 core-splitter 的作用,我可以提供一个简短的描述。
我很难尝试使用多个定界符将字符串拆分为列表。我可以像下面这样将它拆分两次: myString.split(':')[1].split('.') 然而,这看起来很不优雅。在我的脑海里,我想做这样的事情:
来自使用惊喜模块的推荐引擎的代码,我在任何地方都找不到答案。 最佳答案 根据您的目标,您可以使用 cross_validation方法,它将自动为您执行拆分。示例:cross_validate(alg
我正在制作一个有丝 split 模拟器,我希望它在细胞足够大并 split 时运行有丝 split 功能。当它分割时,我希望它能够将分割从初始 x 值(前一个单元格的 x)动画化为新的 x 值(右侧的
我有一个用于三个按钮的点击处理程序,在这个处理程序中我想提取所点击按钮的 ID。我有一行这样的代码: $('#switch button').click(function(){ var cla
我需要像这样分割一个字符串 var val = "$cs+55+mod($a)"; 放入数组 arr = val.split( /[+-/*()\s*]/ ); 问题是将分隔符保留为数组元素,如 ar
我在同一个 string 上使用 split() 和 split("") .但为什么 split("") 返回的元素数量少于 split()?我想知道在什么特定的输入情况下会发生这种情况。 最佳答案
我的代码中某处有错误,但看不到我做错了什么。 我拥有的是 facebook 用户 ID 的隐藏输入,它是通过 jQuery UI 自动完成填充的: 然后,我有一个 jQuery 函数,当单击链接将其
我正在寻找一个程序来读取字符串/文件并显示其中的前三个单词。 所以我尝试了: letter= "a,b,c" print(letter.split(',')[0]) 这对获取一个单词有效,但执行 [0
我有一个存储邮件的表 Mails(谁会想到... ;))。 通过 tinyint MailStatus,我决定这是 SentMail、Draft 还是 ReceivedMail。 现在我想知道 Tab
在我的优化探索中,我发现内置的 split() 方法比等效的 re.split() 方法快大约 40%。 虚拟基准(易于复制粘贴): import re, time, random def rando
我对split有一个奇怪的问题,因为默认情况下它不会将split放入默认数组中。 以下是一些玩具代码。 #!/usr/bin/perl $A="A:B:C:D"; split (":",$A); pr
我目前正在学习 JCL,并且正在使用 SORT 程序。作为练习,我想将一些输入记录拆分为属于同一 PDS 的多个成员。这是我的 JCL 代码: //FAILJ JOB //STEP1 EX
在苦苦挣扎了半小时之后,我在使用空格分割字符串时遇到了这种差异,具体取决于您使用的语法。 简单字符串: $line = "1: 2: 3: 4: 5: " 拆分示例1 -从1开始注意带有 token
我有一个像这样的字符串: 'Agendas / Schedules meetings and speakers 4 F 1928-1209 Box 2' 我正在尝试将其
我试图了解 r-tree 的工作原理,发现有两种类型的拆分:二次拆分和线性拆分。 线性和二次实际上有什么区别?在哪种情况下,一个会比另一个更受欢迎? 最佳答案 原始 R-Tree 论文在 3.5.2
我是一名优秀的程序员,十分优秀!