Django框架 - 03 创建项目及配置

Django的基本用法

1. 在windows中安装

(1) 查看python版本, 确认python环境是否正常

python --version

(2) 在桌面创建一个工程目录(如:hellodjango)

mkdir hellodjango

(3) 创建虚拟环境

python -m venv venv

(4) cd venv / cd Scripts 找到 activate文件

C:\Users\hanbo\Desktop\hellodjango\venv\Scripts>

(5) 激活虚拟环境 (deactivate : 退出虚拟环境)

C:\Users\hanbo\Desktop\hellodjango\venv\Scripts>activate
(venv) C:\Users\hanbo\Desktop\hellodjango\venv\Scripts>

(6) 后退到hellodjango目录下 (用cd ..)

(venv) C:\Users\hanbo\Desktop\hellodjango>

(7) 更新pip包管理工具

python -m pip install -u pip

(8) 安装django

pip install django==1.11
查看django版本 : django-admin --version
1.11

2. 在linux中安装

3. 创建项目及应用

(1) 创建django项目

django-admin startproject hellodjango .

项目创建成功后里面有4个py文件外部有一个manage.py文件:
hellodjango 文件夹
    __init__.py : 指明该目录结构是一个python包,暂无内容,在后期会初始化一些工具会使用到。
    settings.py : Django项目的配置文件,其中定义了本项目的引用组件,项目名,数据库,静态资源,调试模                  式,域名限制等
    urls.py : 项目的URL路由映射,实现客户端请求url由哪个模块进行响应。
    wsgi.py : 定义WSGI接口信息,通常本文件生成后无需改动
manage.py : 是Django用于管理本项目的管理集工具,之后站点运行,数据库自动生成,数据表的修改等都是通过该文件完成。

(2) 运行django项目启动服务器, 测试是否安装成功

python manage.py runserver

想修改端口号 后加端口号
python manage.py runserver 端口号

(3) 修改settings.py配置文件设置语言和时区

LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Chongqing'
此时刷新页面,显示为中文

(4) 创建app应用

python manage.py startapp halloapp

项目创建成功后里面有6个py文件和一个migrations文件夹
migrations目录:存放与模型有关的数据库迁移信息。
__init__.py:指明该目录结构是一个python包,暂无内容,在后期会初始化一些工具会使用到。
admin.py :注册模型,让django自动为你创建管理界面.
apps.py :当前应用的配置.
models.py :存放应用的数据模型,即数据的实体及其之间的关系(MVC/MVT中的M)
tests.py :存放测试应用代码的函数.
views.py :存放处理请求并返回响应的函数(MVC中的C,MVT中的V)

(5) 激活应用

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'demo'  在这里添加应用名
]

(6) 生成动态页面

1.不使用视图模板:
进入应用目录修改视图文件views.py。
在应用目录创建一个urls.py文件并映射URL。
切换到项目目录,修改该目录下的urls.py文件,对应用中设定的URL进行合并。
启动项目并访问应用。
修改views.py生成动态内容。

2.使用视图模板:
先回到manage.py文件所在的目录创建一个templates文件夹。
创建模板页index.html。
回到应用目录,修改views.py文件。
切换到项目目录修改settings.py文件。'DIRS': [os.path.join(BASE_DIR, 'templates')],
重新运行项目并查看结果。

4. 配置MySQL数据库

(1) 导入pymysql模块

在项目文件里面的__init__.py文件中导入pymysql模块, 完成数据库的驱动加载:

import pymysql
pymysql.install_as_MySQLdb()

(2) 连接到mysql数据库服务器

settings.py文件中配置数据库连接信息:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  将sqlite3改成mysql
        'NAME': 'demo',       数据库名
        'HOST': 'localhost',  ip地址或本地主机
        'PORT': 3306,         端口号
        'USER': 'root',       用户名
        'PASSWORD': '123456', 密码
    }
}

(3) 运行mysql数据库服务器创建数据库名

drop database if exists demo;
create database demo default charset utf8;

(4) 定义模型

比如: 创建一个学生模型类
class Student(models.Model):

    s_name = models.CharField(max_length=10)
    s_age = models.IntegerField()
    s_gender = models.BooleanField()

    class Meta:
        db_table = 'cd_student'
        ordering =[]
 重要概念:模型,表,属性,字段
一个模型类在数据库中对应一张表,在模型类中定义的属性,对应模型对照表中的一个字段

(4) 生成迁移文件

python manage.py makemigrations

(5) 执行迁移

python manage.py migrate

(6) 打开mysql数据库服务器是否生成了10张表

5. 使用admin管理后台

(1) 创建账户

(venv)$ python manage.py createsuperuser
Username (leave blank to use 'hao'): hanbo
Email address: 530439558@qq.com
Password: 
Password (again): 
Superuser created successfully.

(2) 注册模型类

from django.contrib import admin

from demo.models import Emp, Dept

admin.site.register(Dept)
admin.site.register(Emp)

(3)在登录后的管理后台中对自定义的模型进行CRUD操作

(4) 继承admin.ModelAdmin,编写自定义的admin

class StudentAdmin(admin.ModelAdmin):
    def set_sex(self):
        if self.sex:
            return '男'
        else:
            return '女'
    set_sex.short_description = '性别'
    list_display = ['id', 'name', set_sex]
    list_filter = ['sex']
    search_fields = ['name']
    list_per_page = 1

admin.site.register(模型名, StudentAdmin)

列表页属性:
list_display:  显示字段
list_filter:   过滤字段
search_fields: 搜索字段
list_per_page: 分页条数

添加修改页属性:
fields:  属性的先后顺序
fieldsets :给属性分组
注意:fields与fieldsets不能同时使用

(4) 使用装饰器去实现注册

@admin.register(模型名)
class StudentAdmin(admin.ModelAdmin):
    def set_sex(self):
        if self.sex:
            return '男'
        else:
            return '女'
    set_sex.short_description = '性别'
    list_display = ['id', 'name', set_sex]
    list_filter = ['sex']
    search_fields = ['name']
    list_per_page = 1

(5) 为类添加魔法方法

from django.db import models

class Dept(models.Model):
    """部门类"""
    name = models.CharField(max_length=20, db_column='dname', verbose_name='部门名称')

    def __str__(self):
        return self.name

    class Meta:
        db_table = 'tb_dept'

(6) 在黑屏终端虚拟环境中对模型的增删改查的操作

python manage.py shell  开启Shell交互式环境
增加:
>>> from hrs.models import Dept, Emp
>>> dept = Dept(88, '经理部', '成都')
>>> dept.save()
更改:
>>> dept.name = '销售部'
>>> dept.save()
查询:
Dept.objects.all()   # 查询所有
过滤查询:
>>> Dept.objects.filter(name='经理部') # 查询部门名称为“经理部”的部门
>>> Dept.objects.filter(name__contains='研发') # 查询部门名称包含“研发”的部门(模糊查询)
>>> Dept.objects.filter(no__gt=10).filter(no__lt=40) # 查询部门编号大于10小于40的部门
>>> Dept.objects.filter(no__range=(10, 30)) # 查询部门编号在10到30之间的部门
查询单个对象:
>>> Dept.objects.get(pk=10)
>>> Dept.objects.get(no=20)
>>> Dept.objects.get(no__exact=30)
数据排序:
>>> Dept.objects.order_by('no') # 查询结果为升序排列
>>> Dept.objects.order_by('-no') # 查询结果为降序排列
切片查询:
>>> Dept.objects.order_by('no')[0:2] # 按部门编号排序查询1~2部门
>>> Dept.objects.order_by('no')[2:4] # 按部门编号排序查询3~4部门
高级查询:
>>> Emp.objects.filter(dept__no=10) # 根据部门编号查询该部门的员工
>>> Emp.objects.filter(dept__name__contains='销售') # 查询名字包含“销售”的部门的员工
>>> Dept.objects.get(pk=10).emp_set.all() # 通过部门反查部门所有的员工
删除:
>>> Dept.objects.get(pk=10).delete() # 删除编号为10的部门
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值