在Pycharm中以DEBUG模式跳过对Django服务器的系统检查

dom*_*nho 17 python django debugging pydev pycharm

我在DEBUG模式下运行Pycharm中的django应用程序.每当我更改一些代码系统检查时执行.

pydev debugger: process 2354 is connecting

Performing system checks...
Run Code Online (Sandbox Code Playgroud)

有没有办法跳过系统检查/加快这项检查?

更新:我想在代码更改后禁用系统检查,因为它们太慢了.

Lou*_*uis 24

问题

不幸的是,没有命令行参数或设置你可以打开以关闭检查runserver.一般来说,有一个--skip-checks选项可以关闭系统检查,但它们是没用的runserver.

如果您读取runserver命令的代码,您会看到它实际上忽略了requires_system_checksrequires_migration_checks标志,而是显式调用self.check()self.check_migrations()在其inner_run方法中,无论如何:

def inner_run(self, *args, **options):
    [ Earlier irrelevant code omitted ...]

    self.stdout.write("Performing system checks...\n\n")
    self.check(display_num_errors=True)
    # Need to check migrations here, so can't use the
    # requires_migrations_check attribute.
    self.check_migrations()

    [ ... more code ...]
Run Code Online (Sandbox Code Playgroud)

一个办法

你可以做的是派生你自己的run命令,它接受runserver命令但覆盖执行检查的方法:

from django.core.management.commands.runserver import Command as RunServer

class Command(RunServer):

    def check(self, *args, **kwargs):
        self.stdout.write(self.style.WARNING("SKIPPING SYSTEM CHECKS!\n"))

    def check_migrations(self, *args, **kwargs):
        self.stdout.write(self.style.WARNING("SKIPPING MIGRATION CHECKS!\n"))
Run Code Online (Sandbox Code Playgroud)

你需要把这个在<app>/management/commands/run.py那里<app>是任何适当应用应该有这样的命令.然后你可以调用它,./manage.py run你会得到类似的东西:

Performing system checks...

SKIPPING SYSTEM CHECKS!

SKIPPING MIGRATION CHECKS!

January 18, 2017 - 12:18:06
Django version 1.10.2, using settings 'foo.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Run Code Online (Sandbox Code Playgroud)

  • 这太棒了!和@ s29如果覆盖django.contrib.staticfiles.management.commands.runserver,它将加载所有静态文件. (2认同)