我想了解这篇博客文章中发布的mixins的代码.
这些mixin login_required从mixins中调用装饰器django.contrib.auth.decorators,但是它们是由method_decoratorfrom来装饰的django.utils.decorators.在下面的示例代码中,我不明白为什么我需要装饰login_required装饰器.
from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import login_required
class LoginRequiredMixin(object):
"""
View mixin which verifies that the user has authenticated.
NOTE:
This should be the left-most mixin of a view.
"""
# Why do I need to decorate login_required here
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(LoginRequiredMixin, self).dispatch(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
该method_decorator装饰说它是用来"功能装饰转换为一个方法装饰"但在测试代码,我可以用我的装饰,即使没有method_decorator.
我的装饰师
def run_eight_times(myfunc):
def inner_func(*args, **kwargs):
for i in range(8):
myfunc(*args, **kwargs)
return inner_func …Run Code Online (Sandbox Code Playgroud) 我有一个描述符
class ReferredItem():
def __init__(self, method):
self.method = method
def __get__(self, obj, objtype):
...
Run Code Online (Sandbox Code Playgroud)
我用它作装饰:
class MyClass():
@ReferredItem
some_method(self):
...
Run Code Online (Sandbox Code Playgroud)
我见过装饰器是小写的.但是应该用驼峰的方式命名类.
我应该把这个名字命名为referred_item?或者保持现状?
我有这个代码:
try:
principal = cls.objects.create(
user_id=user.id,
email=user.email,
path='something'
)
except IntegrityError:
principal = cls.objects.get(
user_id=user.id,
email=user.email
)
Run Code Online (Sandbox Code Playgroud)
它尝试使用给定的id和电子邮件创建用户,如果已存在,则尝试获取现有记录.
我知道这是一个糟糕的结构,无论如何它都会被重构.但我的问题是:
我如何确定IntegrityError发生了什么类型:与unique约束违规相关的一个((user_id,email)上有唯一键)或者与not null约束相关的那个(path不能为空)?
如何在Python中检查字符串是否只包含ASCII字符?像Ruby这样的东西ascii_only?
我希望能够判断从文件读取的字符串特定数据是否在ascii中
class Books():
def __init__(self):
self.__dict__['referTable'] = 1
@property
def referTable(self):
return 2
book = Books()
print(book.referTable)
print(book.__dict__['referTable'])
Run Code Online (Sandbox Code Playgroud)
运行:
vic@ubuntu:~/Desktop$ python3 test.py
2
1
Run Code Online (Sandbox Code Playgroud)
Books.referTable 作为数据描述符不会被以下情况遮蔽book.__dict__['referTable']:
该
property()函数实现为数据描述符.因此,实例不能覆盖属性的行为.
要遮蔽它,而不是property内置描述符,我必须使用自己的描述符.是否有内置描述符,property但是非数据?
我有一个表,我想在运行时更改单元格的colspan/ rowspan属性.这是一个例子:
<html>
<head>
<script type="text/javascript">
function setColSpan() {
document.getElementById('myTable').rows[0].cells[0].colSpan = 2
}
</script>
</head>
<body>
<table id="myTable" border="1">
<tr>
<td>cell 1</td>
<td>cell 2</td>
</tr>
<tr>
<td>cell 3</td>
<td>cell 4</td>
</tr>
</table>
<form>
<input type="button" onclick="setColSpan()" value="Change colspan">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的问题是细胞移位了.我是否应该移除有问题细胞跨越的细胞?
我可以不删除吗?
我想实现一个简单的电子表格.现在,我设法能够选择一个矩形范围的单元格,并显示一个带有"合并选定单元格"选项的菜单.我希望能够"取消合并"细胞,所以跨越细胞而不必移除其他细胞是很好的.
我想为Django项目设置一个Sentry记录器.我将定义一个sentry处理程序,并将该处理程序放在具有error级别的根记录器中.
根据logging模块的文档,有一个特殊的root关键:
root- 这将是根记录器的配置.配置的处理将与任何记录器一样,但该propagate设置将不适用.
同时在其他地方使用带有名称的记录器''来包含根记录器的配置.
这有同样的效果吗?什么是优选的?
>>> import logging
>>> logging.getLogger('') is logging.root
True
>>>
Run Code Online (Sandbox Code Playgroud) 我试图在Scrapy中设置一个自定义下载中间件类.我怀疑我错过了一些明显的东西,但我已经阅读了几次文档而没有找到解决方案.我对这应该是一项非常简单的任务感到有些沮丧,所以希望有人能够为我提供一些见解.
我已将以下行添加到我的settings.py文件中.
DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.TestDownloader': 400 }
Run Code Online (Sandbox Code Playgroud)
添加该行并运行项目后,我收到有关模块中间件不存在的错误.经过一些研究,我发现你需要__init__.py在middlewares文件夹中添加一个文件供Python识别.我这样做了,现在收到以下错误:
NameError: Module 'myproject.middlewares' doesn't define any object named 'TestDownloader'
Run Code Online (Sandbox Code Playgroud)
没有编译TestDownloader.py文件,而项目中的所有其他*.py文件都是.如果我理解我的Python阅读正确,这意味着它没有被导入任何地方,但我找不到任何额外的Scrapy设置来改变以使其工作.
一些信息来源说:
您可以通过设置CMAKE_INSTALL_PREFIX环境变量来更改安装目录(前缀)
如果我在一个文件中:
export CMAKE_INSTALL_PREFIX=$KDEDIR
Run Code Online (Sandbox Code Playgroud)
然后获取它,并检查CMAKE_INSTALL_PREFIX环境变量是否设置,当我这样做:
vic@wic:~/kde/build/kde-workspace$ cmake ../../src/kde-workspace/
Run Code Online (Sandbox Code Playgroud)
然后:
vic@wic:~/kde/build/kde-workspace$ make install
Run Code Online (Sandbox Code Playgroud)
它试图将文件安装到系统目录.
如果我指定CMAKE_INSTALL_PREFIX为cmake的参数:
vic@wic:~/kde/build/kde-workspace$ cmake -DCMAKE_INSTALL_PREFIX=$KDEDIR ../../src/kde-workspace/
Run Code Online (Sandbox Code Playgroud)
然后make install工作正常 - 安装文件到$KDEDIR
文档是否有可能设置具有相同名称的环境变量,或者我做错了什么?
即使在python中初始化变量不是必要的,我的教授仍然希望我们为实践做这件事.我写了我的程序,它工作正常,但在我尝试初始化一些变量后,当我尝试运行它时,我收到了一条错误消息.这是我的计划的第一部分:
def main():
grade_1, grade_2, grade_3, average = 0.0
year = 0
fName, lName, ID, converted_ID = ""
infile = open("studentinfo.txt", "r")
data = infile.read()
fName, lName, ID, year = data.split(",")
year = int(year)
# Prompt the user for three test scores
grades = eval(input("Enter the three test scores separated by a comma: "))
# Create a username
uName = (lName[:4] + fName[:2] + str(year)).lower()
converted_id = ID[:3] + "-" + ID[3:5] + "-" + ID[5:]
grade_1, grade_2, grade_3 = …Run Code Online (Sandbox Code Playgroud) python ×7
django ×3
c++ ×1
cmake ×1
coding-style ×1
decorator ×1
html ×1
html-table ×1
html5 ×1
javascript ×1
logging ×1
postgresql ×1
psycopg2 ×1
python-2.7 ×1
python-3.x ×1
scrapy ×1
sentry ×1