Django系列教程(1)--入门

创建项目

  • 命令 django-admin startproject test1
  • 进入 test1目录,目录结构如下
    这里写图片描述

    目录说明

  • mange.py:一个命令行工具,可以使你用多种方式对Django项目进行交互
  • init.py:一个空文件,它告诉python这个内层的与项目重名的test1目录应该看做一个python包
  • setting.py:项目的配置
  • urls.py:项目的url声明
  • wsgi.py:项目与wsgi兼容的web服务器入口

设计模型

设计介绍

  • 本示例完成“图书-英雄”信息的维护,需要存储两种数据:图书,英雄
  • 图书表结构的设计:
    • 表名:BookInfo
    • 图书名称:btitle
    • 图书发布时间:bpub_date
  • 英雄表结构的设计:
    • 表名:HeroInfo
    • 英雄名:hname
    • 英雄性别:hgender
    • 英雄简介:hcontent
    • 所属图书:hbook
  • 图书-英雄的关系为一对多

数据库配置

  • 在settings.py文件中,通过DATABASE项进行数据库设置
  • jango支持的数据库包括sqlite,mysql等,默认的为sqlite

创建应用

  • 在一个项目中可以创建一到多个应用,每个应用进行一种业务处理
  • 创建应用的命令

    python mange.py startapp booktest

  • 应用的目录结构如下:
    这里写图片描述

定义模型类

  • 有一个数据表,就对应一个模型类
  • 打开models.py,定义模型类
from django.db import models


class BookInfo(models.Model):
    btitle = models.CharField(max_length=20)
    bpub_date = models.DateTimeField()

    def __str__(self):
        # 当输出对象时,会调用str方法
        return "%d" % self.pk


class HeroInfo(models.Model):
    hname = models.CharField(max_length=20)
    hgender = models.BooleanField()
    bcontent = models.CharField(max_length=100)
    hBook = models.ForeignKey('BookInfo')

    def __str__(self):
        return "%d" % self.pk

生成数据表


  • 激活模型:编辑settings.py文件,将booktest应用加入到installed_app中
    这里写图片描述

  • 生成迁移文件:根据模型类生成sql语句

python mange.py makemigrations

  • 迁移文件被生成到应用的migrations目录
  • 执行迁移:执行sql语句生成数据表

    python manage.py migrate


  • 这里写图片描述

    服务器

    • 运行如下命令即可开启服务器

      python mange.py ruanserver ip:port

    • 可以不写ip,端口默认为8000
      第一次打开开发版服务器是这个样子
      这里写图片描述

    后台管理

    使用django的管理


    • 创建一个管理员用户

    python manage.py createsuperuser ,按提示输入相关信息

    • 启动服务器,即可通过“127.0.0.1/admin”进入后台

    向admin注册booktest模型

    • 打开booktest/admin.py文件,注册模型
    from django.contrib import admin
    from .models  import BookInfo,HeroInfo
    admin.site.register(BookInfo)
    admin.site.register(HeroInfo)

    这样,就可以在/admin站点中对模型的属性进行增删改查等操作
    这里写图片描述

    自定义管理页面

    • Django提供了admin.ModelAdmin类
    • 通过定义ModelAdmin的子类,可以定义模型在Admin界面的显示方式
    class QuestionAdmin(admin.ModelAdmin):
        ...
    
    admin.site.register(Question,QuestionAdmin)

    列表页属性

    • list_display:显示字段,可以列头进行排序

      list_display = [‘pk’,’btitle’,’bpub_date’]

    • list_filter:过滤字段,过滤框会出现在右侧

      lister_filter = [‘btitle’]

    • search_fields:搜索字段,搜索框会出现在上侧

      search_fields = [‘btitle’]

    • list_per_page: 分页,分页框会出现在下侧

      list_per_page =10

    添加,修改页属性

    • fields:属性的先后顺序

      fields = [‘bpub_date’,btitle]

    • fieldsets:属性分组

    fieldsets = [
        ('basic',{'fields':['btitle']}),
        ('more',{'fields':['bpub_date']}),
    ]

    视图

    • 在django中,视图对web请求进行回应
    • 视图接受request对象作为第一个参数,包含了请求的信息
    • 视图就是一个Python函数,被定义在view.py中
    # coding=utf-8
    
    # from django.shortcuts import render
    from django.http import  HttpResponse
    
    
    def index(request):
        return HttpResponse('index')
    
    
    def detail(request,id):
        return HttpResponse("detail %s" % id)
    

    定义完视图后,需要配置urlconf,否则无法处理请求

    URLconf


    • 在Django中,urlconf包括正则表达式和视图函数名两个元素,web发出的请求会利用正则与其匹配,进入相应的view函数
    • 在test1/urls.py插入booktest,使主urlconf连接到booktest.urls模块

    url(r’^’,include(‘booktest.urls’))
    .在booktest中的url.py中添加urlconf

    from django.conf.urls import url
    from . import views
    urlpatterns = [
        url(r'^$',view.index),
        url(r'^([0-9]+)/$',views.detail),
    ]

    模板

    • 模板是html页面,可以根据视图中传递的数据填充值
    • 创建模板的目录如下图

    这里写图片描述


    • 修改settings.py文件,设置TEMPLATES值

    ‘DIRS’: [os.path.join(BASE_DIR,’templates’)],

    Render简写

    • Django提供了函数Render()简化视图调用模板构造上下文
    # coding=utf-8
    
    from django.shortcuts import render
    from .models import BookInfo
    
    
    def index(request):
        booklist = BookInfo.objects.all()
        return render(request,'booktest/index.html',{'booklist':booklist})
    
    
    def detail(request,id):
        book =  BookInfo.objects.get(pk=id)
        return render(request,'booktest/detail.html',{'book':book})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值