Python3—创建Django项目

1、先要下载安装Django包

PIP install Django

2、利用命令行创建Django项目jswf

django-admin startproject mysite

创建成功后目录如下

.

├── manage.py

└──mysite

   ├── __init__.py

   ├── settings.py

   ├── urls.py

   └── wsgi.py

3、在jswf目录下创建后台应用项目作为项目后端

cd mysite

python manage.py startapp backend 

创建成功后目录如下

.

├── backend

│   ├── __init__.py

│   ├── admin.py

│   ├── migrations

│   │   └── __init__.py

│   ├── models.py

│   ├── tests.py

│   └── views.py

├── manage.py

└── mysite 

   ├── __init__.py

   ├── settings.py

   ├── urls.py

   └── wsgi.py


4、配置Django项目的数据库:

django中默认的数据库为sqlite3,即新建项目后配置文件(settings.py)中关于数据库的初始配置如下:

DATABASES = {

    'default': {

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

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

    }

}

在django中将配置改为:

DATABASES = {

    'default': {

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

        'NAME': 'mall',

        'USER': 'rinka',

        'PASSWORD': 'rinka0414',

        'HOST': 'localhost',

        'PORT': '3306',

    }

}

其中:

DATABASE_ENGINE即为“背景”中所提到的那些数据库服务器

DATABASE_NAME将数据库名称告知 django

DATABASE_USER告诉 django 用哪个用户连接数据库

DATABASE_PASSWORD 告诉django连接用户的密码

DATABASE_HOST告诉 django 连接哪一台主机的数据库服务器

DATABASE_PORT告诉 django 连接数据库时使用哪个端口

如果使用的是自己的数据库,比如MySQL,最重要的一步,记得在项目同名文件夹下的__init.py__中,加入:

 import pymysql

 pymysql.install_as_MySQLdb()

其中pymysql包同样先使用PIP下载安装。

pip install pymysql

如果没有导入pip install pymysql包会报错:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named'MySQLdb'

5、使用vue-cli在根目录创建一个名称叫【frontend】的Vue.js项目作为项目前端

vue-init webpack frontend

创建成功后目录如下

.

├── backend

│   ├── __init__.py

│   ├── admin.py

│   ├── migrations

│   │   └── __init__.py

│   ├── models.py

│   ├── tests.py

│   └── views.py

├── frontend

│   ├── README.md

│   ├── build

│   │   └── ....

│   ├── config

│   │   ├── dev.env.js

│   │   ├── index.js

│   │   ├── prod.env.js

│   │   └── test.env.js

│   ├── index.html

│   ├── package.json

│   ├── src

│   │   ├── App.vue

│   │   ├── assets

│   │   │   └── logo.png

│   │   ├── components

│   │   │   └── HelloWorld.vue

│   │   └── main.js

│   ├── static

│   └── test

│       └── ...

├── manage.py

└── mysite 

   ├── __init__.py

   ├── settings.py

   ├── urls.py

   └── wsgi.py

我们可以在vue中加入一些常用组件,如element-ui等,再随便添加俩个例子

frontend/src/HelloWorld.vue文件

<template>

  <div class="hello">

    <h1>{{ msg }}</h1>

    <h2>Essential Links</h2>

    <el-select v-model="value" placeholder="请选择">

    <el-option

      v-for="item in options"

      :key="item.value"

      :label="item.label"

      :value="item.value">

    </el-option>

  </el-select>

  <el-row>

    <el-button>默认按钮</el-button>

    <el-button type="primary">主要按钮</el-button>

    <el-button type="success">成功按钮</el-button>

    <el-button type="info">信息按钮</el-button>

    <el-button type="warning">警告按钮</el-button>

    <el-button type="danger">危险按钮</el-button>

  </el-row>

  </div>

</template>

6,使用 webpack 打包vue项目

cd frontend

npm install

npm run build

此时直接运行npm run dev也可以直接查看前端 vue界面

构建完成会生成一个文件夹,名字叫dist,里面有一个 index.html 和一个 文件夹static。

7, 使用Django的通用视图 TemplateView修改静态指向路径(就是让Django访问目录指向我们刚才打包的dist/index.html)

找到项目根 ulb_manager/urls.py文件作出如下修改

fromdjango.contribimport adminfromdjango.urlsimport pathfromdjango.views.generic.baseimportTemplateView //注意加上这句

urlpatterns = [

    # path('admin/', admin.site.urls),path('admin/', admin.site.urls),

    path(r'', TemplateView.as_view(template_name="index.html")),

]


 8、配置Django项目的模板搜索路径和静态文件搜索路径 找到根目录下 ulb_manager/settings.py文件并打开,找到TEMPLATES配置项,修改如下:

TEMPLATES = [

    {

        'BACKEND':'django.template.backends.django.DjangoTemplates',

        # 'DIRS': [],'DIRS':['frontend/dist'],

        'APP_DIRS': True,

        'OPTIONS': {

            'context_processors': [

                'django.template.context_processors.debug',

                'django.template.context_processors.request',

                'django.contrib.auth.context_processors.auth',

                'django.contrib.messages.context_processors.messages',

            ],

        },

    },

]# Add for vue.jsSTATICFILES_DIRS = [

    os.path.join(BASE_DIR, "frontend/dist/static"),

]


9、到此基本就配置完成了,运行命令就可以直接查看效果

python manage.py runserver



记录一些踩过的坑

1、django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

如果你的Django是最新的2.2,PyMySQL也是最新的0.93的话,你会发现Django会报错:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

这个是Django对MySQLdb版本的限制,我们使用的是PyMySQL,所以不用管它

在Python安装路径下的Python36-32\Lib\site-packages\django\db\backends\mysql\base.py文件下,注释下面语句

if version < (1,3,3):

    raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s"% Database.__version__)

这样就可以顺利运行了。

2、AttributeError: ‘str‘ object has no attribute ‘decode‘

紧接着上一个错误,出现了AttributeError: ‘str‘ object has no attribute ‘decode‘,发现是对字符串进行了decode解码操作:(一般对字符串进行编码,二进制进行解码)

其实也是python3的问题,我们用了pymysql,所以也可以不管他

在Python安装路径下的Python36-32\Lib\site-packages\django\db\backends\base\mysql\operations.py147行

query = query.decode(errors='replace')

改为

query = query.encode(errors='replace')

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容