Python Web学习记录之Django(五) -- 对代码的第二次分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_35737303/article/details/80462760

之前写了一篇代码分析,主要是对自己写的代码进行逻辑梳理。现在结合django本身再分析一次。

1. manage.py

首先,启动项目后先访问到的是manage.py文件

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testApp.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)

文件先将testApp.settings设置为环境DJANGO_SETTINGS_MODULE的参数。然后通过execute_from_command_line执行参数,这里的sys.argv为[‘D:/workspace/workspaceDjango/testApp/manage.py’, ‘runserver’, ‘8000’]

2. setting.py

然后项目的所有配置就会在setting中被加载,包括安装应用(INSTALLED_APPS),中间件(MIDDLEWARE),根访问路径(ROOT_URLCONF),模板(TEMPLATES),WSGI(WSGI_APPLICATION),数据库(DATABASES),密码验证(AUTH_PASSWORD_VALIDATORS)等等。
下面关注几个配置

2.1 INSTALLED_APPS

上一篇文章提到过,Django规定如果要使用模型,必须要创建一个app。那么创建的app就需要在这里进行声明,这样在项目启动时才能被加载进去。

2.2 MIDDLEWARE

和安装应用一样

2.3 ROOT_URLCONF

默认为xxx.urls,即指定将URLs路由到视图的列表文件。

2.4 TEMPLATES

指定访问文件路径

2.5 WSGI_APPLICATION

指定一个WSGI:Web Server Gateway Interface。 WSGI接口要求Web开发者实现一个可以响应HTTP请求的函数。

3. 访问

在加载好了这些之后,我们在浏览器输入要访问的路径,Django就会根据指定的ROOT_URLCONF查找到urls.py,再进行下一步查找和响应(后面就是前一次对代码分析的内容了。)

4. 0001_initial.py

在分析文件的时候,看到多了一个0001_initial.py文件,打开发现就是我们在创建模型的时候对数据库的操作。

# Generated by Django 2.0.5 on 2018-05-26 07:07

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Test',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=20)),
            ],
        ),
    ]

这个自动创建的文件就是我们在执行命令的时候执行的文件,它根据models.py自动生成,若以后我们有更多的模型,应该还会有0002_initial.py,0003_initial.py。。。等等。

猜你喜欢

转载自blog.csdn.net/weixin_35737303/article/details/80462760