Django_简单的数据库交互案例

https://www.jianshu.com/p/bd0af02e59ba

一、页面展示

做一个简单的数据库交换的练习案例

页面.png

二、创建mysql 表

(1)创建django

(2)创建app文件python mange.py startapp cmdb

(3)创建数据库,在project同名的配置的 init.py文件中配置mysql连接

import pymysql
pymysql.install_as_MySQLdb() 

(4)在setting.py 中配置mysql 连接,找到DATABASES

DATABASES = {
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.mysql‘,
        ‘NAME‘: ‘testuser‘,
        ‘USER‘:‘root‘,
        ‘PASSWORD‘:‘root‘,
        ‘HOST‘:‘localhost‘,
        ‘PORT‘: ‘3306‘,
    }
}

(5)在setting文件下配置INSTALLED_APPS加入cmdb模块

INSTALLED_APPS = [
    ‘django.contrib.admin‘,
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,
    ‘cmdb‘,
]

(6)根据CODEFIRST创建表,在app models.py 创建类

from django.db import models

# Create your models here.
class user_info(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=64)

(7)创建新的迁移策略文件python manage.py makemigrations

(8)生成数据库表python manage.py migrate

三、url 配置

(1)在project 文件的url配置,url分发,分发到指定的app

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘cmdb/‘, include(‘cmdb.urls‘))
]

(2)在指定的app文件下创建urls.py文件

from django.conf.urls import url,include
from cmdb import views
urlpatterns = [
    #登陆url
    url(r‘login‘, views.login),
    #主界面展示url
    url(r‘index‘, views.index),
    #展示所用户信息url
    url(r‘user_info‘, views.user_info),
    #展示个人信息的url
    url(r‘user-(?P<nid>\d+)‘,views.user_per),
    #删除个人信息的url
    url(r‘delete-(?P<nid>\d+)‘,views.user_delete),
]

四、views 层逻辑编写

(1)登陆主要用到了models.user_info.objects.filter(username=u, password=p).first()

def login(request):
    if request.method == ‘GET‘:
        return render(request,‘login.html‘,{‘msg‘:‘‘})
    elif request.method == ‘POST‘:
        u = request.POST.get(‘user‘,None)
        p = request.POST.get(‘pwd‘,None)
        if u and p :
            #select * from cmdb_user_info where username=u password=p
            obj = models.user_info.objects.filter(username=u, password=p).first()
            if obj:
                #重定向到cmdb/index url 上,url分发到index方法上
                return redirect(‘/cmdb/index‘)
            else:
                msg = ‘用户名密码错误‘
                return render(request,‘login.html‘,{‘msg‘:msg})
        else:
            return render(request, ‘login.html‘, {‘msg‘: ‘‘})

(2)主页面展示

def index(request):
    return render(request,‘index_u.html‘)

(3)用户信息的增加/展示

主要用到了

#select * from cmdb_user_info
obj = models.user_info.objects.all()

#inster into cmdb_user_info(username,password) values(u,p)
models.user_info.objects.create(username=u,password=p)
def user_info(request):
    if request.method == ‘GET‘:
        #select * from cmdb_user_info
        obj = models.user_info.objects.all()
        return render(request,‘index.html‘,{‘user‘:obj})
    elif request.method == ‘POST‘:
        u = request.POST.get(‘user‘)
        p = request.POST.get(‘pwd‘)
        #inster into cmdb_user_info(username,password) values(u,p)
        models.user_info.objects.create(username=u,password=p)
        return redirect(‘/cmdb/user_info‘)

(4)删除

主要用到

 #删除 delete from 表 where id=2
 obj = models.user_info.objects.filter(id=nid).delete()
def user_delete(request, nid):
    #删除 delete from 表 where id=2
    obj = models.user_info.objects.filter(id=nid).delete()
    return redirect(‘/cmdb/user_info‘)

四、templates

(1)login页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="{{ request.path_info }}" method="post">
    <input type="text" name="user">
    <input type="password" name="pwd">
    <span>{{ msg }}</span>
    <input type="submit">
</form>
</body>
</html>

(2)index 页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

          body{
            margin: 0;
        }
        .header{
            height: 48px;
            background-color: aquamarine;
            color: white;
        }
        .conleft{
            position: absolute;
            top: 48px;
            width: 200px;
            left: 0;
            bottom: 0;
            background-color:chocolate;
        }
        .conright{
            position: absolute;
            left: 200px;
            bottom: 0px;
            right: 0px;
            top: 48px;
            overflow: auto;
            background-color: burlywood;
        }
    </style>
</head>
<body>
<div class="header">欢迎</div>
<div class="con">
    <div class="conleft">
        <a href="/cmdb/user_info">用户管理</a>
    </div>
    <div class="conright">

    </div>
</div>
<div></div>
</body>
</html>

(3)用户信息展示页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

          body{
            margin: 0;
        }
        .header{
            height: 48px;
            background-color: aquamarine;
            color: white;
        }
        .conleft{
            position: absolute;
            top: 48px;
            width: 200px;
            left: 0;
            bottom: 0;
            background-color:chocolate;
        }
        .conright{
            position: absolute;
            left: 200px;
            bottom: 0px;
            right: 0px;
            top: 48px;
            overflow: auto;
            background-color: burlywood;
        }
    </style>
</head>
<body>
<div class="header">欢迎</div>
<div class="con">
    <div class="conleft">
        <a href="/cmdb/user_info">用户管理</a>
    </div>
    <div class="conright">
        <form action="{{ request.path_info}}" method="post">
            <input type="text" name="user">
            <input type="text" name="pwd">
            <input type="submit" >
        </form>
        {% for i in user %}
            <a href="/cmdb/user-{{ i.id }}">{{ i.username }}
            <a href="/cmdb/delete-{{ i.id }}">删除</a>

            <br>
        {% endfor %}
    </div>
</div>
<div></div>
</body>
</html>

(4)个人信息更改页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

          body{
            margin: 0;
        }
        .header{
            height: 48px;
            background-color: aquamarine;
            color: white;
        }
        .conleft{
            position: absolute;
            top: 48px;
            width: 200px;
            left: 0;
            bottom: 0;
            background-color:chocolate;
        }
        .conright{
            position: absolute;
            left: 200px;
            bottom: 0px;
            right: 0px;
            top: 48px;
            overflow: auto;
            background-color: burlywood;
        }
    </style>
</head>
<body>
<div class="header">欢迎</div>
<div class="con">
    <div class="conleft">
        <a href="/cmdb/user_info">用户管理</a>
    </div>
    <div class="conright">
        <p>用户信息</p>
        <form action="{{ request.path_info }}" method="post">
        <input type="text" value="{{ i.username }}" name="user">-
        <input type="text" value="{{ i.password }}" name="pwd">
        <input type="submit">编辑</a>
        </form>
    </div>
</div>
<div></div>
</body>
</html>

作者:两点半的杂货铺
链接:https://www.jianshu.com/p/bd0af02e59ba
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

原文地址:https://www.cnblogs.com/Justin-Tim/p/10055388.html

时间: 2024-10-30 07:12:23

Django_简单的数据库交互案例的相关文章

JSP与oracle数据库交互案例

本案例为咖啡销售情况录入查询系统 一.数据输入系统: 1.  设计输入信息页面 代码如下: <html> <head> </head> <body> <center><H1>咖啡管理系统--录入系统</H1></center> 欢迎来到录入系统<br /> <form action="inputaction.jsp" method="post" name

ORM初级实战简单的数据库交互

setting.py中: 1 """ 2 Django settings for untitled3 project. 3 4 Generated by 'django-admin startproject' using Django 2.0.7. 5 6 For more information on this file, see 7 https://docs.djangoproject.com/en/2.0/topics/settings/ 8 9 For the ful

数据库交互的几个简单的对象

 以前曾经写过几篇关于.net对SQL SERVER编程中用到的几个对象,发现理解的不是很深刻,今天在这里在总结一下. 为何还会总结呢? 因为试想无论是做WEB开发还是桌面应用程序,都离不开与数据库打交道(增.删.改.查).无非就是这些操作,变化的只是前段页面,后台与数据库的交互是始终不变的. 无论是B/S还是所谓的C/S后台都是一回事,所以只要把后台数据库交互部分设置好了,工程就完成了一多半了. 常用对象 SqlConnection:表示一个到 SQL Server 数据库的打开的连接. 

java实现简单的数据库的增删查改,并布局交互界面

一.系统简介 1.1.简介  本系统提供了学生信息管理中常见的基本功能,主要包括管理员.管理员的主要功能有对学生信息进行增加.删除.修改.查找等操作,对信息进行管理,对信息进行修改.查找等操作. 二.功能设计 2.1  需求分析 21世纪是信息化时代,信息化已更快捷更方便为目标来融入各行各业.学校也不例外.当前,我国的学校正在加紧实施信息化建设,其中学生信息管理是相对重要的 一部分. 目前,社会上信息管理系统发展飞快,各个企事业单位都引入了信息化管理软件来管理自己日益增长的各种信息,学生信息管理

C#如何定制Excel界面并实现与数据库交互

Excel是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理.统计分析和辅助决策操作,广泛地应用于管理.统计财经.金融等众多领域.(另外,Excel还是伦敦一所会展中心的名称)..NET可以创建Excel Add-In对Excel进行功能扩展,这些扩展的功能包括自定义用户函数,自定义UI,与数据库进行数据交互等. 一 主要的Excel开发方式 1 VBA  VBA是一种Visual Basic的宏语言,它是最早的Office提供定制化的一种解决方案,VBA是VB的一个子集,和Vis

C#基础视频教程6.3 如何简单读写数据库

在继续往下做之前,我们需要把之前的代码尽可能的精简(会对后面很有好处,而且读者也应该仔细比对这一部分的代码和上一部分哪里真正得到了优化,从而提高编程水平). 首先数据库的操作类有哪些是可以做的更加普遍,变量名也通用的,至少要连接的目标数据库名称,目标工作薄,密码都应该是通用的,连接方法也是通用的,所以应该把连接到数据库的这个方法独立出来(我后面要写一个读写QuestionUser的类只要复制粘贴修修改改即可) ? 其次增查删改的几个方法,是否有必要做的更通用呢?这些方法要么输入类型要指定的结构体

【玩转SQLite系列】(六)SQLite数据库应用案例实现历史搜索记录

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53366564 本文出自[DylanAndroid的博客] [玩转SQLite系列]文章目录 [玩转SQLite系列](一)初识SQLite,重拾sql语句 [玩转SQLite系列](二)SQLite创建和打开数据库的三种方式 [玩转SQLite系列](三)通过sql语句操作SQLite数据库 [玩转SQLite系列](四)通过Android提供的API操作SQLite数据库

初步了解Node.js,学做简单的留言本案例

在还没有正式的学Node.js的时候, 你们认为Node.js 对于前端来说是什么呢? 会认为Node.js 是框架? 认为这是类似Jquery的一个快速.简洁的JavaScript框架? 反正我自己起初是这么认为的,因为它后面有个 .js. 那么在正式开始接触Node.js的时候,才发现自己是有多么愚蠢.在进入了Node.js的官网后,看完对Node的介绍一后才发现 Node 和 Js 都好猛啊. 官方对Node.js就简单的一句话:(Node.js® is a JavaScript runt

Java对象简单实用(计算器案例)

Java对象简单实用(计算器案例) 对 Java中的对象与属性,方法的使用,简单写了个案例 1 import java.util.Scanner; 2 class Calculste 3 { 4 int a; //定义两个整数 5 int b; 6 String option; //定义接收操作符的字符串 7 public void count(){ 8 9 //对操作符进行判断 10 switch(option){ 11 case "+": 12 System.out.println