Django

install Django

  • install Django: pip install django -i https://pypi.douban.com/simple/
  • 检测安装是否成功:python -m django --version

step 1:create project name

  • 第一种方式: django-admin startproject bysms
  • 第二种方式:
    1. step 1:mkdir bysms && cd bysms
    2. step 2: django-admin startproject config .

step 2: 运行项目:

第一种方式:python manage.py runserver 127.0.0.1:8088 //可修改端口    
第二种方式:python manage.py runserver 0.0.0.0:80
  • settings.py 设置运行访问网站的IP ALLOWED_HOSTS = [‘0.0.0.0’]

step 3: 创建APP功能模块

Django 中的一个app 就是项目里面的一个应用模块的意思。

  • 创建销售模块
    1. setp 1: python manage.py startapp sales
    2. setp 2: 修改url请求规则请求的 url 地址 是 /sales/orders/ , 就由 views.py 里面的函数 listorders 来处理, 返回一段字符串给浏览器。
      views.py添加代码
from django.http import HttpResponse

def listorders(request):
    return HttpResponse("下面是系统中所有的订单信息。。。")

路由优化,在模块下面创建子路由,跟主路由结合。

注: 当访问 sales/orders/路径的时候。 会先去主路由,匹配到路径sales之后,会进入到include,下面的orders进行访问,
setp 1: 在子模块下面创建urls.py文件(下面导入的views是提取创建好的如下)

# urls.py
from django.urls import path

from . import views

urlpatterns = [
    path('orders/', views.listorders),
]

# views.PY
from django.http import HttpResponse
# Create your views here.
def listorders(request):
    return HttpResponse("sale/views/ 的 listorders函数")

step 2: 修改主url路由文件 bysms/urls.py

from django.contrib import admin

# 导入一个include函数
from django.urls import path, include

from sales.views import listorders
urlpatterns = [
    path('admin/', admin.site.urls),

    # 凡是 url 以 sales/  开头的,
    # 都根据 sales.urls 里面的 子路由表进行路由
    path('sales/', include('sales.urls')),

]

step 4: 创建数据库

目前使用自带的,后续改成mysql只需要修改配置就可以
下载工具:https://github.com/pawelsalawa/sqlitestudio/releases
项目中数据库的配置在 bysms/settings.py 中 DATABASES

清空数据库 python manage.py flush
创建超级管理员 python manage.py createsuperuser
修改用户密码 python manage.py changepassword username
导出数据 导入数据 python manage.py dumpdata appname > appname.json
python manage.py loaddata appname.json

项目中数据库的配置在 bysms/settings.py 中,这里

一:执行命令创建数据库: python manage.py migrate

工具打开这个文件

这种 通过 对象 操作数据库 的方法 被称之为 ORM

定义我们的 数据库表

创建一个名为common的应用目录, 里面存放我们项目需要的一些公共的表的定义

python manage.py startapp common

common/models.py

from django.db import models

class Customer(models.Model):
    # 客户名称
    name = models.CharField(max_length=200)

    # 联系电话
    phonenumber = models.CharField(max_length=200)

    # 地址
    address = models.CharField(max_length=200)

CharField 对象,对应 varchar类型的数据库字段
可以查看语法:https://docs.djangoproject.com/en/2.0/ref/models/fields/#model-field-types

创建好之后要告诉Django: 我们的 common 应用中 需要你关注, 因为其中包含了 数据库Model的定义。

settings.py

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

   # 加入下面这行
   'common.apps.CommonConfig',
]

生成命令:python manage.py makemigrations common

Migrations for ‘common’:
common\migrations\0001_initial.py
- Create model Customer

这个命令,告诉Django , 去看看common这个app里面的models.py ,我们已经修改了数据定义, 你现在去产生相应的更新脚本。

执行一下,会发现在 common\migrations 目录下面出现了0001_initial.py, 这个脚本就是相应要进行的数据库操作代码。

最后一步真正创建成功:

注意

如果以后我们修改了Models.py 里面的库表的定义,都需要再次运行 python manage.py makemigrations common 和 python manage.py migrate 命令,使数据库同步该修改结果

Django提供了一个管理员操作界面可以方便的 添加、修改、删除你定义的 model 表数据。

首先,我们需要创建 一个超级管理员账号。

进入到项目的根目录,执行如下命令,依次输入你要创建的管理员的 登录名:admin、email:johncol@qq.com、密码:11111111。

python manage.py createsuperuser

然后我们需要修改应用里面的 管理员 配置文件 common/admin.py,注册我们定义的model类。这样Django才会知道

from django.contrib import admin

from .models import Customer

admin.site.register(Customer)

http://127.0.0.1/admin/

数据库配置中文

settings.py 中 MIDDLEWARE

admin界面语言本地化

'django.middleware.locale.LocaleMiddleware',

读取数据库数据

Django 中 对数据库表的操作, 应该都通过 Model对象 实现对数据的读写,而不是通过SQL语句。

实现一个功能:浏览器访问 sales/customers/ 服务端就返回系统中所有的客户记录给浏览器。

sales/views.py 中,定义一个listcustomers 函数

# 导入 Customer 对象定义
from  common.models import  Customer

def listcustomers(request):
    # 返回一个 QuerySet 对象 ,包含所有的表记录
    # 每条表记录都是是一个dict对象,
    # key 是字段名,value 是 字段值
    qs = Customer.objects.values()

    # 定义返回字符串
    retStr = ''
    for customer in  qs:
        for name,value in customer.items():
            retStr += f'{name} : {value} | '

        # <br> 表示换行
        retStr += '<br>'

    return HttpResponse(retStr)

过滤条件

def listcustomers(request):
    # 返回一个 QuerySet 对象 ,包含所有的表记录
    qs = Customer.objects.values()

    # 检查url中是否有参数phonenumber
    ph =  request.GET.get('phonenumber',None)

    # 如果有,添加过滤条件
    if ph:
        qs = qs.filter(phonenumber=ph)

    # 定义返回字符串
    retStr = ''
    for customer in  qs:
        for name,value in customer.items():
            retStr += f'{name} : {value} | '
        # <br> 表示换行
        retStr += '<br>'

    return HttpResponse(retStr)

http://www.byhy.net/tut/webdev/django/07/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值