• 开始一个django工程


    1,创建工程

          cd 到你想创建工程的目录。执行如下命令      

       django-admin startproject HelloWorld

          创建了工程HelloWorld

         查看工程HelloWorld,目录结构如下:

        

        HelloWorld: 项目的容器 
        manage.py: 命令行工具,用于和Django交互 
        HelloWorld/init.py:空文件,告诉python,该目录是一个Python包 
        HelloWorld/setting.py : 对该项目的配置文件 
        HelloWorld/urls.py : 该项目的url声明 
        HelloWorld/wsgi.py : 服务器入口

    2,  创建应用

         在工程HelloWorld下,创建应用learn     

       django-admin startapp learn

         或者

         python manage.py startapp learn

    3   在开发服务器上运行工程 (仅用于开发)   

     python manage.py runserver

         在本地浏览器中输入http://127.0.0.1:8000,查看HelloWorld 工程的运行页面。     

     python manage.py runserver 0.0.0.0:8000

         0.0.0.0 表示监控电脑的所有的ip地址,8000 是端口,可自配。

    4   uwsgi 运行项目

         uwsgi --http :8001 --chdir /path/to/project --home=/path/to/env --module project.wsgi

         --home 指定virtualenv 路径,如果没有可以去掉。project.wsgi 指的是 project/wsgi.py 文件

    5 使用supervisor

       1,  生成 supervisor 默认配置文件,比如我们放在 /etc/supervisord.conf 路径中,root 用户执行

           echo_supervisord_conf > /etc/supervisord.conf

       2,supervisor.conf 在最底部添加

            [program:zqxt]

       command=/path/to/uwsgi --http :8003 --chdir /path/to/zqxt --module zqxt.wsgi
       directory=/path/to/zqxt
       startsecs=0
       stopwaitsecs=0
       autostart=true
       autorestart=true
       3.,启动 supervisor
            (sudo) supervisord -c /etc/supervisord.conf
       4, 启动,停止,或重启 supervisor 管理的某个程序 或 所有程序
              (sudo) supervisorctl -c /etc/supervisord.conf [start|stop|restart] [program-name|all]
     
        5,使用 ini 配置文件来实现上述功能
             在项目zqxt 中建/home/tu/zqxt/uwsgi.ini输入如下:
             [uwsgi]
       socket = /home/tu/zqxt/zqxt.sock
     
       chdir = /home/tu/zqxt
     
       wsgi-file = zqxt/wsgi.py
     
       touch-reload = /home/tu/zqxt/reload
     
     
     
       processes = 2
     
       threads = 4
     
     
     
       chmod-socket = 664
     
       chown-socket = tu:www-data
     
     
     
       vacuum = true
             接着修改 supervisor 配置文件中的 command 一行:
             command=/path/to/uwsgi --ini /home/tu/zqxt/uwsgi.ini
             最后重启zqxt 项目:
       (sudo) supervisorctl -c /etc/supervisord.conf restart zqxt
     

    FAQ:

        1,浏览器访问报错

          Invalid HTTP_HOST header: '192.168.1.111:8000'. You may need to add '192.168.1.111' to ALLOWED_HOSTS

          解决方法:

          在工程setting.py 中更改 ALLOWED_HOSTS = ['*']

        2,如何添加应用到工程中

            将我们新建的应用(learn)添加到工程的 settings.py 中的 INSTALLED_APPS中,也就是告诉Django有这么一个应用

             INSTALLED_APPS = (

        'django.contrib.admin', 
        'django.contrib.auth', 
        'django.contrib.contenttypes', 
        'django.contrib.sessions', 
        'django.contrib.messages', 
        'django.contrib.staticfiles', 
        'learn', 
         )
         3,如何更换数据库
               django默认使用的数据库是sqlite3,如果你想改成mysql或者其他数据库的话,需要则在project的settings.py文件中修改DATABASES
               
               sqlite 数据库配置

               DATABASES = {

                    'default': {

                    'ENGINE': 'django.db.backends.sqlite3',

                    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
                    }
             }

            mysql数据库配置

            DATABASES = {
                       'default': {
                      'ENGINE': 'django.db.backends.mysql',
                      'NAME': 'hellodatabase',
                      'USER': 'zhj',
                      'PASSWORD': '12345678',
                      'HOST': '127.0.0.1',
                      'PORT': '5432',
                      }
             }

             注:  django默认使用MySQLdb模块连接mysql。但是在python3中没有这个模块只有python2中有这个模块,python3只有pymysql模块,所以我们需要主动修改为pymsql:

      
      在project同名文件下的__init__.py文件中添加如下代码即可
     
      import pymysql
      pymysql.install_as_MySQLdb()
           生成数据库表:
          

           打开终端输入这两条命令:
      1,python manage.py  makemigrations

         2,python manage.py  migrate

      通过python manage.py  makemigrations 找到我们所有的models,然后通过python manage.py  migrate生成数据库表,

        

        4  service supervisor start  启动报错

              Starting supervisor: Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting superviso

              解决方法:unlink /tmp/supervisor.sock

              原因:这个进程可以已经启动了,再启动需要先unlink 以前的。

       5,django 运行时不认识程序或者网页中的中文字

             按网上所说尝试如下:

            1),在.py文件首行加上#coding=UTF-8

            2),在.py文件中加入

                     import sys
                     var1=sys.getdefaultencoding()

                    reload(sys)

                    sys.setdefaultencoding('utf8')

              都未能解决该问题。

             最后发现是程序文件本身格式不对,都是ASCAII text 类型的。

             检查文件格式命令:

               file file_name 或者 

     enca -L zh_CN file_name 

               只要把这类型的文件格式转换为utf-8 的就可以解决这个问题了。

             

              用pycarm 编辑器修改,如 在 文件中添加一行  s = '从从'  中文,保存,即可转换过来,当然去掉其中的中文,又会回到ASCAII text 类型。

             

           

          6,如何关停apache 服务

               sudo apache2ctl stop

               sudo update-rc.d -f apache2 remove 参数-f是强制删除符号链接,即使/etc/init.d/apache2仍然存在。Note:这个命令仅仅禁止该服务,直到该服务被升级。

               如果你想在服务升级后仍然保持被禁用。应该执行如下的命令: update-rc.d apache2 stop 80 0 1 2 3 4 5 6.

       

         7, django不能创建数据库中的表的问题        

           报错:No migrations to apply

               

              第一步:

                    删除该app名字下的migrations下的__init__.py等文件。

             第二步:

                   进入数据库,找到django_migrations的表,删除该app名字的所有记录。

            第三步:执行下面这两条命令:(在项目目录下)

                   python manage.py makemigrations

                  python manage.py migrate

            原因:

           django_migrations表记录着数据库的对应表的修改记录。

           每次修改后,都执行第三步的命令,然后在第一步的文件夹下生成修改的文件,django_migrations表记录修改的变更过程。

       

              

         

    参考资料:

    https://code.ziqiangxuetang.com/django/django-url-name.html

    http://www.runoob.com/django/django-tutorial.html

    http://www.runoob.com/python/python-tutorial.html

  • 相关阅读:
    swift把颜色转成图片
    第四篇:断路器(Hystrix)
    第三篇: 服务消费者(Feign)
    第二篇:服务消费者(RestTemplate+ribbon)
    第一篇:服务的注册与发现Eureka(Finchley版本)
    递归打印目录层次(java版)
    zuul熔断代码
    Window安装Erlang环境
    移动一根火柴使等式成立js版本(递归)
    mysql 存储过程 游标嵌套
  • 原文地址:https://www.cnblogs.com/huanhuaqingfeng/p/11101751.html
Copyright © 2020-2023  润新知