Django

1.环境搭建

注意:如果嫌麻烦,不要装最新的版本,django使用2.0,因为xadmin的官方branch最新就是支持2.0

 

1.1 python3.6,pycharm,virtualenv的使用

pycharam快捷键

ctrl+左键

shift+左键

shift+tab

ctrl + H 全局搜索

 

1.2 MySQL server

注意:(在windows下)

1.还要安装python3.6的连接程序,当在安装时,requirement没有满足时,点击excute可以自动帮忙安装。

2.如果后期需要重新配置,打开mysql installer就可以

3.默认安装路径 C:\Program Files\MySQL\MySQL Server 8.0\bin 加到环境变量, 可以在命令行 通过 mysql -uroot -p 命令可以进行登入mysql控制台

 

1.3 Navicat for mysql

注意:

字符集设置 utf-8 utf_general_ci  ,否则中文报错

 

2.文件目录

project

--template:存放模板 放置html

--project:项目真正python包  应用的名称默认与项目名称一样

  --inti

  --setting:配置文件 项目全局配置文件

  --urls:url 主要的urls配置入口

  --wsgi:部署到服务器 Django启动需要的文件。

--manage:启动Django需要的主要文件。(主要的Django命令都通过manage.py运行)

-------------------------------------------以上是最根本的目录结构--------------------------------------------

--application   app是Django里一个一个应用的文件夹单位。

如何创建应用:通过 Tools -> Run manage.py Task创建app:startapp message 可以看到当输入startapp message之后,创建了message应用。并存放在了与项目目录同级目录。

  --migrations:迁移数据库用到

  --init 自动生成__init__.py文件表明这是一个包。使得该文件夹可导入。

  --model:模型管理文件

  --admin:后台管理文件

  --view:试图文件

  --tests:测试文件

  --apps:

-----------------------------------------以上是通过命令自动创建的---------------------------------------------

--static 放静态文件

--log

--media

  

注意:

 

1.前端页面中链接的url路径是 “/”开头,或者 {%url “url的别名”%}

2.新建application:1.startapp name  2.在settings中加入 INSTALLED_APPS

3.新建static目录使用static目录来存放网站的静态文件:js,css,图片等。

  注意在Setting中静态文件的配置

  STATIC_URL = '/static/'

  只说明了目录的名称。并没有指明查找的根路径。添加下面代码,这样就可以让static文件下的其他文件夹可以被找到

  STATIC_URL = '/static/'
  STATICFILES_DIRS = [
  os.path.join(BASE_DIR, 'static')
  ]

4.新建log目录使用log目录来存放网站的日志文件

5.新建media目录使用media目录存放用户上传的图片等资源。

6.为方便管理文件,解决项目大了之后app过多问题新建文件夹 apps,将message文件夹拖入apps文件夹内:会自动生成__init__.py文件表明这是一个包。使得apps文件夹可导入。

  6.1将apps目录右键mark成Source Root,如果不这样pycharm会报错,即使你已经执行了第二步。而如果不执行第二步,cmd中会报错

  6.2我们在项目的setting文件中配置我们的apps路径:

    import sys
    sys.path.insert(0,os.path.join(BASE_DIR,'apps'))

7.CTRL-BREAK.可以用ctrl+c 来中断服务

 

 

3.配置Django连接Mysql数据库

DATABASES = {
      'default': {

          'ENGINE': 'django.db.backends.mysql',
          'NAME': 'testdjango',
          'USER': 'root',
          'PASSWORD': '密码',
          'HOST': "127.0.0.1"
      }
} 

 
注意:
1.别忘了配置MySQL驱动  mysql-python 或者  pip install mysqlclient  whl文件下载链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/
2.生产django默认数据表,因为mysql的8.0更改了加密方式,makemigrations命令会报错,所以记得更改mysql的加密方式。
3.在MySQL控制台中,执行命令要加上分号。https://blog.csdn.net/qq_34809033/article/details/80928178

更改加密方式:

1.登录mysql,连接用户为root。
> mysql -u root -p

2.执行命令查看加密方式
> use mysql;
> select user,plugin from user where user='root';

3.执行命令修改加密方式
> alter user 'root'@'localhost' identified with mysql_native_password by 'yourpassword';

4.属性权限使配置生效
> flush privileges;

重设mysql8.0的加密方式后,再次启动django服务器就没有任何问题了。

 

 

4.migrate和makemigration

makemigrations会在当前目录下生成一个migrations文件夹,该文件夹的内容就是数据库要执行的内容python manage.py makemigrations 

migrate就是执行之前生成的migrations文件,这一步才是操作数据库的一步python manage.py migrate 

备注:Django每次更新模型都需要执行以上两步,需要注意的是Django模型增加内容需要设定变量的初始值,否则会在第一步出现问题

makemigrations后面也可以加应用名称否则就是对整个项目进行操作

 

 

 

 5.xadmin的使用

 
前提:采用源码安装方式 ,qithub上找django2的branch

git clone -b django2 https://github.com/sshwsfc/xadmin.git

pip install git+git://github.com/sshwsfc/xadmin.git@django2 可以用来安装它的依赖包,然后卸载xadmin

1.setting文件中:

  sys.path.insert(0,os.path.join(BASE_DIR, 'extra_apps'))

2.setting文件中:

  'xadmin',
  'crispy_forms'

3.url文件中path('xadmin/', xadmin.site.urls),

使用:在项目中使用xadmin

xadmin就相当于一个数据库管理器

在application文件夹下创建adminx.py文件

 

注意:
 
1.在安装python的相关模块和库时,我们一般使用“pip install  模块名”或者“python setup.py install”,前者是在线安装,会安装该包的相关依赖包;后者是下载源码包然后在本地安装,不会安装该包的相关依赖包。所以在安装普通的python包时,利用pip工具相当简单。但是在如下场景下,使用python setup.py install会更适合需求:

2.git clone -b 分支名仓库地址使用Git下载v.2.8.1分支代码,使用命令:git clone -b v2.8.1 https://git.oschina.net/oschina/android-app.git

3.如果想要使用xadmin,记得新建adminx文件。

4.源码安装,与pip安装的区别在于源码安装可以更改源码,进而实现自己的功能就和tensorflow的model一样

 

 

 

5.工作流程

5.1 写model

 

重写__str__方法,这是因为在后台添加数据的时候,如果不重写,后台会显示

def __str__(self):
  return self.name

5.2 写url配置文件

5.3 写view

5.4 写template

5.4.1前端页面放入值

为input系列标签添加value: 使用my_message.name取到我们传递过来的my_message对象的属性值。

<input id="name" type="text" name="name"
value="{{ my_message.name }}" class="error" placeholder="请输入您的姓名"/>

为textarea标签添加值

<textarea id="message" name="message" placeholder="请输入你的建议">{{ my_message.message }}</textarea>

5.4.2form表

post请求要:{% csrf_token %}

 
 
 
 
 
posted @ 2018-09-18 21:24  Gaoyongxian666  阅读(136)  评论(0编辑  收藏  举报