美文网首页
Django_基本使用

Django_基本使用

作者: Lutous | 来源:发表于2020-03-10 14:39 被阅读0次
    创建项目

    django-admin startproject 项目名称

    • __init__.py:说明mysql_django是一个python包
    • settings.py:项目的配置文件
    • urls.py:进行url路由配置
    • wsgi.py:web服务器和Django交互入口
    • manage.py:项目管理文件
    创建应用

    python manage.py startapp 应用名

    • __init__.py:说明目录是一个Python模块
    • models.py:数据库项目的内容
    • views.py:接口请求,进行处理,定义处理函数,视图函数
    • tests.py:写测试代码的文件
    • admin.py:网站后台管理相关的文件
    建立联系

    建立应用和项目之间的联系,需要修改settings.py 中的 INSTALLED_APPS配置项,对应用进行注册

    INSTALLED_APPS = [
       'django.contrib.admin',
       'django.contrib.auth',
       'django.contrib.contenttypes',
       'django.contrib.sessions',
       'django.contrib.messages',
       'django.contrib.staticfiles',
       'banting',
    ]
    
    ORM框架:
    • Object:对象-类
    • Relations:关系,关系数据库中的表
    • Mapping:映射,通过类和对象操作对应的数据表
    数据模型

    在应用目录下models.py文件中创建数据模型

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    from django.db import models
    
    
    # 设计和表对应的类
    # 艺术家类 --- 一类
    class Artist(models.Model):
       # CharField -- 字符串
       a_name = models.CharField(max_length=20)
       
       # 性别
       a_gender = models.BooleanField(default=False)
    
       # DateField -- 日期类型
       a_birthday = models.DateField()
    
       def __str__(self):
           return self.a_name.encode('utf-8')
    
    
    # 专辑模型类 --- 多类
    class Albums(models.Model):
       # 专辑名称
       album_name = models.CharField(max_length=20)
       # 备注
       album_common = models.CharField(max_length=128)
       # 歌曲数量
       album_count = models.IntegerField()
       # 关系属性,建立艺术及与专辑之间的一对多关系
       # 关系属性对应的表的字段名格式: 关系属性名_id (h_artist_id)
       album_book = models.ForeignKey('Artist')
    
       def __str__(self):
           return self.album_name.encode('utf-8')
    
    根据模型类生成数据表:
    • 生成成迁移文件:python manage.py makemigrations

    • 执行迁移生成表:python manage.py migrate

    执行成功之后,项目根目录下会生成db.sqlite3数据库文件

    通过模型类操作数据表

    进入项目shell命令:python manage.py shell

    from banting.models import Artist
    from datetime import date
    a = Artist()
    a.a_name='周杰伦'
    a.a_birthday=date(2000,1,1)
    a.save() # 保存
    Artist.objects.get(id=1) # 查询banting_artist表中id为1的数据
    a.a_birthday = date(1988,1,1) # 修改
    a.delete() # 删除
    ...
    album.album_book = a # 给关系属性赋值,值为一类的对象
    Artist.objects.all() # 查询所有内容
    a.albums_set.all() # 查询一类对象索关联的所有多类对象
    
    后台管理
    • 语言和时区的本地化 --- 修改settings.py文件
    # LANGUAGE_CODE = 'en-us'
    LANGUAGE_CODE = 'zh-hans'
    
    # TIME_ZONE = 'UTC'
    TIME_ZONE = 'Asia/Shanghai'
    
    创建管理员

    命令:python manage.py createsuperuser
    输入账号、邮箱、密码即可创建后台管理用户

    打开后台管理界面

    启动服务:python manage.py runserver
    在浏览器中输入:127.0.0.1:8000/admin/

    注册模型

    在应用下admin.py中注册模型类

    from banting.models import *
    
    
    # 自定义模型管理类
    class ArtistInfoAdmin(admin.ModelAdmin):
       """图书模型管理类"""
       list_display = ['id', 'a_name', 'a_gender', 'a_birthday']
    
    
    class AlbumsInfoAdmin(admin.ModelAdmin):
       list_display = ['id', 'album_name', 'album_common', 'album_count']
    
    
    # 注册模型类
    admin.site.register(Artist, ArtistInfoAdmin)
    admin.site.register(Albums, AlbumsInfoAdmin)
    

    视图

    通过浏览器请求一个页面时,使用试图函数来处理这个请求,试图函数处理之后,要给浏览器返回页面内容。

    • 视图函数在应用views.py文件中定义
    from django.http import HttpResponse
    
    
    # 1.定义视图函数, HttpRequest
    # 2.进行url配置,建立url地址和视图的对应关系
    def index(request):
       """进行请求处理,对M和T进行交互"""
       return HttpResponse("Hello Django")
    
    • url配置过程
      1、在应用目录下创建urls.py文件
      2、配置项目urls.py文件
    # 应用urls文件
    from django.conf.urls import url
    from banting import views
    
    
    urlpatterns = [
       url(r'^index$', views.index), # 建立
    ]
    
    # 项目urls文件
    from django.conf.urls import include
    urlpatterns = [
       url(r'^admin/', admin.site.urls),
       url(r'^', include("banting.urls")),
    ]
    

    浏览器中输入:127.0.0.1:8000/index,界面显示“Hello Django”

    模板
    • 创建模板文件夹


    • 设置模板文件
      1、项目settings.py文件配置模板路径('DIRS': [os.path.join(BASE_DIR, 'templates')],)
      2、项目urls.py文件配置
    urlpatterns = [
       url(r'^index$', views.index),
       url(r'^artist$', views.show_artist),
       url(r'^artist/(\d+)$', views.show_album),
    ]
    
    • 使用模板文件
    # 项目views.py
    def show_artist(request):
       """显示歌手名称"""
       artists = Artist.objects.all()
       return render(request, 'banting/show_artist.html', {'artists': artists})
    
    
    def show_album(request, a_id):
       """显示专辑详情"""
       artist = Artist.objects.get(id=a_id)
    
       # 查询和artist关联的专辑信息
       albums = artist.albums_set.all()
       return render(request, 'banting/show_album.html', {'artist': artist, 'albums': albums})
    
    <!--show_album.html-->
    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <title>显示专辑信息</title>
    </head>
    <body>
    <h1>{{artist.a_name}}</h1>
    <url>
       {% for music in albums %}
           <li>{{music.album_name}} --- {{album_.h_common}}</li>
       {% empty %}
           <li>专辑内没有歌曲信息</li>
       {% endfor %}
    </url>
    </body>
    </html>
    
    <!--show_artist.html-->
    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <title>显示艺术家信息</title>
    </head>
    <body>
    艺术家信息如下:
    {% for artist in artists %}
    <li><a href="/artist/{{ artist.id }}">{{ artist.a_name }}</a></li>
    {% endfor %}
    </body>
    </html>
    

    浏览器中输入:127.0.0.1:8000/artist


    相关文章

      网友评论

          本文标题:Django_基本使用

          本文链接:https://www.haomeiwen.com/subject/wkmirhtx.html