ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Django之创建项目

2021-02-14 22:59:53  阅读:219  来源: 互联网

标签:help 项目 models 创建 apps django text Django


创建虚拟环境——创建django项目——创建工作子项目——配置数据库连接——生成数据库表——测试项目启动

ps: 一个系统可以装多个版本的 python 解释器,但是之后用到的第三方包会很多,如果一个系统上要开发很多个python项目,那么用到的依赖包都不一样,如果都直接安装在系统环境中,那么会显的相当臃肿,再者,不同的项目可能用到的包的版本是不一样的,所以使用虚拟环境才是正解。

下面以windows为例,linux太熟悉了,懒的写。

django是自学的,下面的是看完别人的项目自己尝试了一下使用 apps 目录放应用项目(子项目),有不合理的地方被专业的开发刷到请不要见笑,我的目标只是要做一个会开发的好运维。

1、使用命令安装虚拟环境

  命令行切换到要安装虚拟环境的路径,直接执行下面的命令,即可创建虚拟环境。我是在 E:\python_project\yl\venv 下面执行的此命令(Linux和windows都可以使用此命令创建)

python3 -m venv .

cd 命令切换到 Scripts 目录中,执行 activate 就会加载到虚拟环境的环境变量了。加载成功会显示 (venv)

此时使用 pip 命令安装的所有包全部会安装到虚拟环境的主目录 Lib 下

使用 pip 安装 django 和 pymysql ,django最好选择一个稳定版本,新版本有 bug 

pip install django==2.2.7
pip install pymysql

二、创建django项目

等待安装完毕后,再选择一个要创建项目的位置,使用 django-admin.exe 命令创建项目

django-admin.exe startproject schaduler_works

创建完毕后,会看到一个 schaduler_works 目录

三、创建应用项目

切到 schaduler_works 目录中,手动创建一个新的目录 apps,再进入 apps 目录中,然后创建一个应用项目(也可以不在 apps 中创建,在apps中创建一般都是稍微大型的项目规划的更细致需要的)

cd schaduler_works\apps
python ../manage.py startapp workduty

创建好后,可以看到多了一个 workduty 的目录,目录结构如下。

四、配置新项目、数据库连接

打开 schaduler_works/settings.py 文件,修改如下

在 INSTALLED_APPS 中加入新创建的应用,我是在 apps 目录下创建的,所以要写成 apps.workduty 

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

 然后配置mysql连接,NAME的值是数据库的名称

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }

DATABASES = {
    'default':
    {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'schaduler_works',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': '123qwe',
    }
}

 在 schaduler_works/__init__.py 文件中引入 pymysql 的包,这里不写会报错的(但是我见过有的项目没写,不知道为什么,我是个运维,django这块儿也是个新手,这算是我笔记吧)

import pymysql
pymysql.install_as_MySQLdb()

五、创建 models ,使用 ORM 将数据库表同步到数据库中

在 apps\workduty\models.py 中写入要创建的数据库表结构(刷到此文章的同行不要笑话我的表结构,这是我自己练习写个小项目用的,对设计表的思想完全是空白)

from django.db import models

# Create your models here.

class work_users(models.Model):
    """值班人员动作表"""
    user_id = models.AutoField(primary_key=True, help_text="用户id")
    department = models.CharField(max_length=10, help_text="部门")
    job = models.CharField(max_length=20, help_text="职务")
    name = models.CharField(max_length=20, help_text="值班人员名字")
    phone = models.CharField(max_length=11, help_text="电话")
    mail = models.CharField(max_length=30, help_text="邮箱")
    user_create_date = models.DateTimeField(auto_now_add=True, help_text="创建用户时间")
    user_update_date = models.DateTimeField(auto_now=True, help_text="更新用户时间")

    class Meta:
        db_table = "work_users"


class dates(models.Model):
    """一年的日期表"""
    date_id = models.AutoField(primary_key=True, help_text="排班id")
    date = models.DateTimeField(help_text="日期")
    week = models.IntegerField(help_text="周")
    date_cn = models.CharField(max_length=20, help_text="日期,中文")
    week_cn = models.CharField(max_length=5, help_text="周,中文")

    class Meta:
        db_table = "dates"


class schedulers_work(models.Model):
    """排班表"""
    _id = models.AutoField(primary_key=True, help_text="不做逻辑使用")
    date_id = models.IntegerField(help_text="排班id")
    first_user_id = models.IntegerField(help_text="第一值班人,关联用户id")
    tow_user_id = models.IntegerField(help_text="第二值班人,关联用户id")

    class Meta:
        db_table = "schedulers_work"

 然后执行下面两个命令创建表到数据库中。python manage.py makemigrations 是创建数据库迁移文件,执行完此命令后,会在apps\workduty\migrations 目录中生成一个文件;python manage.py migrate是将迁移文件的表结构同步到数据库中。

python manage.py makemigrations
python manage.py migrate

ps: 如果执行 apps\workduty\migrations 时报错 AttributeError: 'str' object has no attribute 'decode' ,我修改了一个文件就没问题了,话说是 django版本的一个 bug 

将这个位置的 decode 改成 encode 即可

执行完毕没有报错的话,再查看数据库,会看到表已经生成了。

六、测试django项目是否能正常启动

在 apps\workduty\views.py 文件中写个 HttpResponse 测试一下

from django.http import HttpResponse


def Index(request):
    return HttpResponse("首页测试")

在管理目录 schaduler_works\urls.py 中写上路由

from django.contrib import admin
from django.urls import path
from apps.workduty import views as apps_workduty

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', apps_workduty.Index),
]

启动 django 项目 

python manage.py runserver 0.0.0.0:8000

然后在浏览器访问一把

访问到 apps/workduty 应用没有问题,那么现在基础的django目录结构规划就已经完成了。之后再有新的应用,直接创建在 apps 中即可。

标签:help,项目,models,创建,apps,django,text,Django
来源: https://blog.csdn.net/qq_31547771/article/details/113811540

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有