小编war*_*iuc的帖子

为什么我需要使用@method_decorator来装饰login_required装饰器

我想了解这篇博客文章中发布的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)

django decorator login-required django-class-based-views

10
推荐指数
1
解决办法
6948
查看次数

描述符的命名约定

我有一个描述符

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?或者保持现状?

python coding-style naming-conventions

10
推荐指数
2
解决办法
1387
查看次数

IntegrityError:区分唯一约束和非空违规

我有这个代码:

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 django postgresql psycopg2

10
推荐指数
2
解决办法
1万
查看次数

检查字符串是否只包含ASCII字符?

如何在Python中检查字符串是否只包含ASCII字符?像Ruby这样的东西ascii_only?

我希望能够判断从文件读取的字符串特定数据是否在ascii中

python python-2.7

10
推荐指数
3
解决办法
2万
查看次数

内置非数据版本的属性?

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但是非数据?

python

9
推荐指数
1
解决办法
162
查看次数

为单元格设置colspan/rowspan

我有一个表,我想在运行时更改单元格的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)

我的问题是细胞移位了.我是否应该移除有问题细胞跨越的细胞?

我可以不删除吗?

我想实现一个简单的电子表格.现在,我设法能够选择一个矩形范围的单元格,并显示一个带有"合并选定单元格"选项的菜单.我希望能够"取消合并"细胞,所以跨越细胞而不必移除其他细胞是很好的.

html javascript html5 html-table

9
推荐指数
1
解决办法
5万
查看次数

dictconfig中的根记录器

我想为Django项目设置一个Sentry记录器.我将定义一个sentry处理程序,并将该处理程序放在具有error级别的根记录器中.

根据logging模块的文档,有一个特殊的root关键:

root - 这将是根记录器的配置.配置的处理将与任何记录器一样,但该propagate设置将不适用.

同时在其他地方使用带有名称的记录器''来包含根记录器的配置.

这有同样的效果吗?什么是优选的?

>>> import logging
>>> logging.getLogger('') is logging.root
True
>>> 
Run Code Online (Sandbox Code Playgroud)

python django logging sentry

9
推荐指数
1
解决办法
3574
查看次数

无法在Scrapy中定义自定义下载中间件

我试图在Scrapy中设置一个自定义下载中间件类.我怀疑我错过了一些明显的东西,但我已经阅读了几次文档而没有找到解决方案.我对这应该是一项非常简单的任务感到有些沮丧,所以希望有人能够为我提供一些见解.

我已将以下行添加到我的settings.py文件中.

DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.TestDownloader': 400 }
Run Code Online (Sandbox Code Playgroud)

添加该行并运行项目后,我收到有关模块中间件不存在的错误.经过一些研究,我发现你需要__init__.pymiddlewares文件夹中添加一个文件供Python识别.我这样做了,现在收到以下错误:

NameError: Module 'myproject.middlewares' doesn't define any object named 'TestDownloader'
Run Code Online (Sandbox Code Playgroud)

没有编译TestDownloader.py文件,而项目中的所有其他*.py文件都是.如果我理解我的Python阅读正确,这意味着它没有被导入任何地方,但我找不到任何额外的Scrapy设置来改变以使其工作.

python scrapy

8
推荐指数
1
解决办法
3512
查看次数

CMAKE_INSTALL_PREFIX环境变量 - 不起作用?

一些信息来源说:

您可以通过设置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

文档是否有可能设置具有相同名称的环境变量,或者我做错了什么?

c++ cmake

8
推荐指数
1
解决办法
8309
查看次数

在python中"初始化"变量?

即使在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 python-3.x

8
推荐指数
4
解决办法
6万
查看次数