zoukankan      html  css  js  c++  java
  • 跟大佬学django-安装、创建应用、manage.py、网站配置

    django起步

    安装django

    sudo pip3 install Django==1.10.1

    >>> django.get_version()

    '1.10.1

    创建django项目

    python3 django-admin startproject mysite

     

    启动django:

    python3 manage.py runserver 0.0.0.0:8000

    [root@bogon mysite]# python3 manage.py runserver 0.0.0.0:8000

    Performing system checks...

    System check identified no issues (0 silenced).

    You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.

    Run 'python manage.py migrate' to apply them.

    August 29, 2019 - 00:12:32

    Django version 1.10.1, using settings 'mysite.settings'

    Starting development server at http://0.0.0.0:8000/

    Quit the server with CONTROL-C.

    [29/Aug/2019 00:12:38] "GET / HTTP/1.1" 200 1767

    Not Found: /favicon.ico

    [29/Aug/2019 00:12:38] "GET /favicon.ico HTTP/1.1" 404 1940

    关闭防火墙:systemctl stop firewalld

    或者service firewalld stop

    [root@localhost mysite]# service firewalld stop

    Redirecting to /bin/systemctl stop firewalld.service

    [root@localhost mysite]# firewall-cmd --state 

    not running

    关于防火墙的帖子

    https://www.cnblogs.com/zxg-blog/p/9835263.html

    在windows上访问centos系统ip:8000端口

    创建应用

    python3 manage.py startapp blog

     

    django-admin startapp blog也可以创建应用

    [root@bogon mysite]# django-admin startapp blog

    [root@bogon mysite]# ls

    blog  db.sqlite3  manage.py  mysite

    在windows下配置deployment连接到linux服务器,可以同步看到代码

     

     

    manage.py

    在了解manage.py之前,先讲解创建项目时用到的django-admin.py,它是django的任务管理命令行工具

    django-admin命令查看帮助信息

    [root@bogon mysite]# django-admin

     

    Type 'django-admin help <subcommand>' for help on a specific subcommand.

     

    Available subcommands:

     

    [django]

        check

        compilemessages

        createcachetable

        dbshell

        diffsettings

        dumpdata

        flush

        inspectdb

        loaddata

        makemessages

        makemigrations

        migrate

        runserver

        sendtestemail

        shell

        showmigrations

        sqlflush

        sqlmigrate

        sqlsequencereset

        squashmigrations

        startapp

        startproject

        test

        testserver

    看到startapp和startproject了吧,在创建项目的命令中,我们使用了startproject。这里还有一个startapp,这个参数在刚刚创建的应用中出现了,但不是用在django-admin后面,而是用于python manage.py的参数,那么这里的startapp是啥意思呢?

    [root@localhost mysite]# django-admin help startapp

    usage: django-admin startapp [-h] [--version] [-v {0,1,2,3}]

                                 [--settings SETTINGS] [--pythonpath PYTHONPATH]

                                 [--traceback] [--no-color] [--template TEMPLATE]

                                 [--extension EXTENSIONS] [--name FILES]

                                 name [directory]

     

    Creates a Django app directory structure for the given app name in the current

    directory or optionally in the given directory.

    positional arguments:

      name                  Name of the application or project.

      directory             Optional destination directory

    用django-admin help来查看一下,发现startapp这个参数也是用于创建应用的,与python manage.py startapp application_name中的startapp的功能一样。

    我们把刚刚建立的项目中的blog应用删除,再用django-admin startapp blog试一下。

    [root@localhost mysite]# ls

    blog  db.sqlite3  manage.py  mysite

    [root@localhost mysite]# rm -r blog

    [root@localhost mysite]# ls

    db.sqlite3  manage.py  mysite

    [root@localhost mysite]# django-admin startapp blog

    [root@localhost mysite]# ls

    blog  db.sqlite3  manage.py  mysite

    python manage.py startapp blog和django-admin startapp blog的形式不同,但效果一样,也建立了应用blog,如果用tree命令查看目录结构,会发现与前面的目录结构一模一样,如下

    既然,django-admin startapp blog和python manage.py startapp blog是殊途同归的,那么manage.py是什么呢?

    创建一个Django项目后,manage.py被自动生成在项目的根目录中,它是对django-admin的简单封装,同样能够实现命令行操作

    python3 manage.py查看manage.py帮助信息

    [root@bogon mysite]# python3 manage.py

    Type 'manage.py help <subcommand>' for help on a specific subcommand.

    Available subcommands:

    [auth]

        changepassword

        createsuperuser

    [django]

        check

        compilemessages

        createcachetable

        dbshell

        diffsettings

        dumpdata

        flush

        inspectdb

        loaddata

        makemessages

        makemigrations

        migrate

        sendtestemail

        shell

        showmigrations

        sqlflush

        sqlmigrate

        sqlsequencereset

        squashmigrations

        startapp

        startproject

        test

        testserver

    [sessions]

        clearsessions

    [staticfiles]

        collectstatic

        findstatic

        runserver

    与django-admin进行对比,发现代码有一部分相同,同时manage.py还有自己的特点。

    django-admin命令对应着django-admin.py文件,它在django安装后保存在django安装目录的/bin下面。

    [root@localhost django]# whereis django-admin.py

    django-admin: /usr/local/bin/django-admin.py

    而manage.py只在建立了一个项目之后,才存在与项目的根目录中

    对于根目录中的manage.py,不要修改,也不要删除,后面我们会经常使用它。

    mysite

    mysite是所建项目的管理功能目录,这个目录的名称因用户所创建的项目名称的不同而异,虽然可以在这个目录中输入应用部分的内容,但在类似本书的多应用项目中一般不这么做。它里面的几个文件常用与面向这个项目进行参数配置。

    settings.py:

    这个文件中包括了项目的初始化设置,可以针对整个项目进行有关参数配置,如配置数据库、添加应用等。

    urls.py:

    这是一个URL配置表文件,主要是将URL映射到应用程序上。当用户请求某个URL时,Django项目会根据这个文件中的映射关系指向某个目标对象,该对象可以是某个应用中的urls.py文件,也可以是某个具体的视图函数。在django中,这个文件也被称为URLconf,这是django非常强大的一个特性。

    wsgi.py:WSGI是Web Server Gateway Interface的缩写。

    读者可能听说过CGI,CGI是Common Gateway Interface的缩写,与WSGI有所不同。WSGI是python所选择的服务器和应用标准,django也会使用。wsgi.py文件定义了我们所创建的项目都是WSGI应用。

    关于WSGI的更多知识可以参阅:http://wsgi.readthedocs.io/en/latest/index.html

    __pycache__:

    创建项目后,运行python manage.py runserver命令,django会进行编译,编译后会成.pyc结尾的文件,这些文件会存在__pychache__文件夹中。

    blog

    blog是项目中所创建的应用之一,注意是之一,用创建应用的指令还可以创建很多其他的应用。每创建一个新的应用,django就会在项目根目录(./)中创建一个子目录,并且目录中会有一些默认的文件。

    admin.py

    在这个文件中,可以自定义django管理工具,比如设置在管理界面能够管理的项目,或者通过重新自定义与系统管理有关的类对象,向管理功能增加新的内容。

    apps.py

    这个文件是django1.0之后增加的,通常包含对应用的设置,比如为管理功能提供一个适合的应用名称。

    migrations

    这是一个目录,用于存储应用的数据库表结构的指令,通过这些指令可以修改和创建数据库从而在models.py模型类和数据库表之间迁移。

    models.py

    这是应用的数据模型,每个django应用都应当有一个models.py文件,虽然该文件可以为空,但不易删除。

    test.py

    在这个文件中可以编写测试文档来测试所建立的应用。

    views.py

    这是一个重要的文件,用于保存响应各种请求的函数或者类。如果编写的是函数,则称之为基于函数的视图;如果编写的是类,则称之为基于类的视图。views.py就是保存函数或者类的视图文件。当然,也可以用其他的文件夹名称,只不过在引入响应的函数或者类时,要注意名称的正确性,views.py是我们习惯使用的文件名称。

    db.sqlite3

    这时一个默认的数据库。SQLite是python默认安装的数据库,在django中也可以默认使用。因为到现在为止我们还没有配置数据库,所以就有了一个默认的文件(这个默认文件是在./mysite/settings.py中配置生成的)。

    网站配置

    前面仅仅是创建了应用,还没有将该应用注册到本项目中,因此暂时不能访问。

    在django项目中,主管信息注册(对本项目进行各种信息声明)的文件是./mysite/settings.py。在浏览这个文件时会发现里面的内容还不少,下面说明一下主要的内容:

    DEBUG:

    其值为True或者False,在开发过程中,需要设置成True,在测试功能时,django能够显示详细的报错信息—这是“开发模式”。如果将项目部署到真正要对外发布的服务器上,我们称之为“生产环境”,必须将其值修改为False,从而避免暴露项目的内部信息。

    ALLOWED_HOSTS:

    在DEBUG为True时,其值可以为空。当部署到生产环境中时,要把主域名填写到这里,才能通过域名访问到本网站。

    INSTALLED_APPS:

    这是一个非常重要的配置项,所有的应用只有写到这里才能生效。默认情况下,已经有了一些应用,比如django.contrip.admin就是针对项目后台管理的应用。现在需要把刚刚建立的blog配置到这里。下面的INSTALLED_APPS列表中,‘blog’是新增的,就是所建立的应用名称,其他各项是django默认具有的应用:

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog'
    ]

    DATABASES:

    在这里可以配置数据库。django能够支持多种数据库,比如常见的MySQL、PostgreSQL、Oracle等。默认配置是SQLite,因为这个数据库小巧灵活,还是python标准库所支持的。所以,我们就使用这个数据库,便于读者使用和迁移代码,在实际的工程项目中,在服务器上可能很少用到它。

    LANGUAGE_CODE:

    设置项目的语言,一般情况下可以不用修改,如果非用汉语,则设置为LANGUAGE_CODE=’zh-hans’(主要不是’zh-cn’)。

    TIME_ZONE:

    设置时区,通常使用东八区,设置为”Asia/Shanghai”。

    至此,我们已经创建了项目和一个应用,并且对./mysite/settings.py进行必要的配置。已经迈出了第一步。

  • 相关阅读:
    WPF应用程序中获取参数
    访问远程oracle数据库时TNS操作超时
    VS2010不能引用System.Data.OracleClient解决方法
    Windows系统下完全卸载Oracle
    创建WPF单实例应用程序
    Winform 版本信息
    SQL Date Time format
    Union合并数组(去掉重复的项目)
    SQL数据类型nchar,char,varchar与nvarchar区别
    Sql语句 生日提醒
  • 原文地址:https://www.cnblogs.com/xiaxiaoxu/p/12194067.html
Copyright © 2011-2022 走看看