• Django基于ORM数据库配置


    1.自己手动创建数据库

      create database 数据库名

    2.在Django项目中配置数据库相关配置 setting文件下

     1 DATABASES = {
     2     'default': {
     3         'ENGINE': 'django.db.backends.mysql',    #连接数据库的类型
     4         'HOST':'127.0.0.1',                      #连接数据库地址
     5         'PORT':3306,                             #端口号
     6         'NAME':'manage',                         #数据库名
     7         'USER':'kevin',                          #数据库用户名
     8         'PASSWORD':'12121',                      #数据库密码
     9     }
    10 }

    3.告诉diango用pymysql去代替mysqlDB,去连接数据库 

       在项目的_init_.py文件里配置 非APP下的_init_.py

    1 import pymysql
    2 #让Django用pymysql来代替mysqlDB
    3 pymysql.install_as_MySQLdb()

    4.在APP应用里的model文件定义class(映射数据库表名),类必须继承models.Model

       类的对象对应表的一条记录,属性对应一列记录;

    1 class UserInfo(models.Model):
    2     id=models.AutoField(primary_key=True) #自增类型主键
    3     name=models.CharField(null=False,max_length=20) #不为空 char长度为20

    5.执行命令语句去创建数据表

       >>>python manage.py makemigrations

       >>>python manage.py migrate

    需要注意:若是数据库表已经有数据,要添加属性列则需要指定字段列是否为空,不为空则必须给默认值,否则无法添加新的数据列字段

    ******************************************************************************

    实现数据库内容在HTML页面:

    1.找对应关系 在web项目的urls 文件里添加要访问的连接和对应的函数

    1 url(r'^user_list/',views.user_list),

    2.在appfind应用程序的views文件夹下实现user_list函数,函数里面会去取后台数据库表的值,通过类去实现获取全部数据

    3.要在HTML页面显示数据则需要用到render页面渲染,指定要渲染的页面,把数据以字典形式传过去。

    1 def user_list(request):
    2     data=models.UserInfo.objects.all()
    3     return render(request,'user_list.html',{'user_list':data})

    4.在web项目的templates文件夹写入user_list.html文件

    5.文件中涉及到多条表记录时可以使用Django内置的模板for循环取值

    1 {% for user in user_list %}
    2              <tr>
    3                <td>{{ user.id }}</td>
    4                <td>{{ user.name }}</td>
    5                <td>{{ user.age }}</td>
    6             </tr>
    7         {% endfor %}

     6.往数据表里插入数据:

    主要是用到models.UserInfo.objects.create(key=value)

    1 def add_user(request):
    2     if request.method=='POST':
    3         user=request.POST.get('username',None)
    4         password=request.POST.get('password',None)
    5         models.UserInfo.objects.create(name=user,psd=password)
    6 
    7         return  redirect('/user_list/')
    8 
    9     return  render(request,'add_user.html')

     7.按条件删除数据表记录:

    1 def delete_press(request):
    2     gid=request.GET.get('id',None)
    3     if gid:
    4         models.Press.objects.all().get(id=gid).delete()
    5     else:
    6         return HttpResponse('遇到了未知错误!')
    7     return redirect('/press/')

    GET请求,按id进行检索,用filter过滤也能实现get的效果,但是如果检索的条件数据库查不到,它不会异常处理。

    8.按id修改数据记录:

     1 def edit_press(request):
     2     if request.method=='POST':
     3         n_press=request.POST.get('press_name')
     4         n_id = request.POST.get('num')
     5         n_obj=models.Press.objects.get(id=n_id)
     6         n_obj.name=n_press  #给筛选到的对象的属性重新赋值   就是更新字段值
     7         n_obj.save()
     8         return  redirect('/press/')
     9 
    10     eid=request.GET.get('id',None)
    11     if eid:
    12         pre_obj= models.Press.objects.all().get(id=eid)
    13         return render(request,'edit_press.html',{'press':pre_obj})
    14     else:
    15         return  HttpResponse('编辑的出版社不存在!')

    修改完数据后一定要将数据对象重新save() 保存一下

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    通常GET链接的构成由两部分组成:

    路径和请求参数,中间以?进行区分

    例如 :127.0.0.0 /delete_press/?id=5

    GET请求通常适用于:传参数链接a标签

    POST请求适用于:大段数据,隐私数据文件上传

  • 相关阅读:
    JS处理日期&字符串格式相互转换
    Ajax 原理过程 同步与异步区别 优缺点
    元素居中
    width:100%;与width:auto;的区别
    URL、URI和URN三者之间的区别
    JavaScript encodeURI(), decodeURI(), encodeURIComponent(), decodeURIComponent()
    CSS 笔记三(Tables/Box Model/Outline)
    CSS 笔记二(Text/Fonts/Links/Lists)
    CSS 笔记一(Selectors/ Backgrounds/ Borders/ Margins/ Padding/ Height and Width)
    javascript,jQuery,trim()
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9536430.html
Copyright © 2020-2023  润新知