欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Django基础与使用命令创建Django的过程(Django学习笔记)

程序员文章站 2022-07-15 08:06:41
...

1. web框架?

[1] 框架, 即framwork, 特指为解决一个开放性问题而设计的具有一定约束性的支撑结构, 使用框架可以帮助快速开发特定的系统, 简单地说, 就是你用别人搭建好的舞台来做表演.
[2] 对于所有的web应用, 本质上其实就是一个socket服务端, 用户的浏览器其实就是一个socket客户端.
[3] 自己实现动态HTML,写底层代码,需要先花几个月读懂HTTP规范。所以,对于我们来说,底层代码由专门的服务器软件实现, 我们用Python专注于生成HTML文档。TCP连接, HTTP原始请求和响应格式,用统一的接口(WSGI: Web Server Gateway Interface.), 让我们专心用Python编写web业务.

2. MVC和MTV模式

[1] Django的MTV模式:让各组件之间保持松耦合关系。
[2] Django的MTV分别代表:

  • Model(模型): 负责业务对象与数据库的对象(ORM)
  • Template(模板): 负责 如何把页面展示给用户
  • View(视图): 负责业务逻辑, 并在适当的时候调用Model和Template

此外, Django还有一个url分发器, 它的作用是将一个个url的页面请求分发给不同的view处理, view再调用相应的Model和Template.

3. django的一些命令

[备注:在我自己的windows系统中来操作,先安装好python和django,才能执行下面的命令]

3.1 创建一个diango project

e:\>django-admin.py startproject mysite

Django基础与使用命令创建Django的过程(Django学习笔记)
manage.py:Django项目里面的工具, 通过它可以调用django shell和数据库等.
setting.py:包含了项目的默认设置, 包括数据库信息, 调试标志以及其他一些工作的变量.
urls.py : 负责把url模式映射到应用程序.

3.2 在mysite目录下创建应用, 比如blog:

e:\mysite>python manage.py startapp blog

Django基础与使用命令创建Django的过程(Django学习笔记)

3.3 启动diango项目

e:\mysite>python manage.py runserver 8080

启动成功的日志:
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migration
s for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 10, 2019 - 16:15:29
Django version 2.2.3, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8080/
Quit the server with CTRL-BREAK.

访问:http://127.0.0.1:8080/ 看看启动成功的样子。
Django基础与使用命令创建Django的过程(Django学习笔记)

3.4. 同步更改数据库或字段

e:\mysite>python manage.py makemigrations

执行后的日志:
No changes detected
e:\mysite>python manage.py migrate

执行后的日志:
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying sessions.0001_initial... OK

注意:Django 1.7.1 以前的版本需要用以下命令
python manage.py syncdb

3.5. 清空数据库

e:\mysite>python manage.py flush
执行后的日志:
You have requested a flush of the database.
This will IRREVERSIBLY DESTROY all data currently in the 'e:\\mysite\\db.sqlite3' database,
and return each table to an empty state.
Are you sure you want to do this?

    Type 'yes' to continue, or 'no' to cancel: yes

3.6. 创建超级管理员

e:\mysite>python manage.py createsuperuser

# 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填

Username (leave blank to use 'admin'): admin
Email address: 12345678@qq.com
Password:
Password (again):
The password is too similar to the username.
This password is too short. It must contain at least 8 characters.
This password is too common.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

# 修改 用户密码可以用:
python manage.py changepassword username(你自己创建的用户名)

3.7. Django项目环境终端

e:\mysite>python manage.py dbshell

执行后的日志:
SQLite version 3.27.2 2019-02-25 16:06:06
Enter ".help" for usage hints.
sqlite>

Django 会自动进入在settings.py中设置的数据库, 如果是 MySQL 或 postgreSQL, 会要求输入数据库用户密码.

3.8. Django项目环境终端

e:\mysite>python manage.py shell

执行后的日志:
Python 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

3.9. 查看更多命令

e:\mysite>python manage.py

Django基础与使用命令创建Django的过程(Django学习笔记)

3.10. static配置

STATIC文件还可以配置STATICFILES_DIRS,指定额外的静态文件存储位置。
    #  STATIC_URL的含义与MEDIA_URL类似。

    # ----------------------------------------------------------------------------
    #注意1:
        #为了后端的更改不会影响前端的引入,避免造成前端大量修改

        STATIC_URL = '/static/'               #引用名
        STATICFILES_DIRS = (
            os.path.join(BASE_DIR,"statics")  #实际名 ,即实际文件夹的名字
        )

        #django对引用名和实际名进行映射,引用时,只能按照引用名来,不能按实际名去找
        #<script src="/statics/jquery-3.1.1.js"></script>
        #------error-----不能直接用,必须用STATIC_URL = '/static/':
        #<script src="/static/jquery-3.1.1.js"></script>

    #注意2(statics文件夹写在不同的app下,静态文件的调用):

        STATIC_URL = '/static/'

        STATICFILES_DIRS=(
            ('hello',os.path.join(BASE_DIR,"app01","statics")) ,
        )

        #<script src="/static/hello/jquery-1.8.2.min.js"></script>

    #注意3:
        STATIC_URL = '/static/'
        {% load staticfiles %}
       # <script src={% static "jquery-1.8.2.min.js" %}></script>