django的CURD应用

Url的两种显示  一种是以? Get的方式

Views.py

USER_DICT = {
    ‘1‘: {‘name‘: ‘root1‘, ‘email‘: ‘[email protected]‘},
    ‘2‘: {‘name‘: ‘root2‘, ‘email‘: ‘[email protected]‘},
    ‘3‘: {‘name‘: ‘root3‘, ‘email‘: ‘[email protected]‘},
    ‘4‘: {‘name‘: ‘root4‘, ‘email‘: ‘[email protected]‘},
    ‘5‘: {‘name‘: ‘root5‘, ‘email‘: ‘[email protected]‘}}
def index(request):
    return render(request, ‘index.html‘, {"user_dict": USER_DICT})

Index.html

{% for i,k in user_dict.items %}
    <h3><a  target="_blank" href="/detail/?nid={{ i }}">{{ k.name }}</a></h3>
{% endfor %}

点击的时候 index.html 去做跳转

(少图片)

配置点击后的路径路由

点击后根据a链接提供的路径来显示不同的页面

在后台get接受下不同的字典的键值,然后根据不同的键值去获取不同的内容

# 细节
def detail(reques,nid):
    nid = request.GET.get(‘nid‘)
    detail_info = USER_DICT[nid]    #USER_DICT 字典的一个url
    return render(request, ‘detail.html‘, {‘detail_info‘: detail_info})

然后在页面中直接渲染显示

detail.html

{% for v,k in detail_info.items %}
   <h1>{{ v }}---{{ k }}</h1>
   <h1>{{ detail_info }}</h1>
{% endfor %}

显示的结果

注意 : 在SEO的优化中 更偏向的是另一种写法  权重是不一样的

Urls.py   配置的路径需要改为

url(r‘^detail-(\d+).html/‘, views.detail),

模板里需要配置

在页面的显示

所以最终版就是

Urls配置路径   这里的\d  会传递给views里的值必须找变量来接受

url(r‘^detail-(\d+).html/‘, views.detail),

Index.html 里来获取调到页面的信息

{% for i,k in user_dict.items %}
    <h3><a   href="/detail-{{ i }}.html/">{{ k.name }}</a></h3>
{% endfor %}

View.py  来接受到urls.py给的信息   这样就免去了get的获取

def detail(request, nid):   # 默认的url就访问的到nid里的信息
    detail_info = USER_DICT[nid]
    return render(request, ‘detail.html‘, {‘detail_info‘: detail_info})

在detail.html  html页面只要一份就可以了

<h3>详细</h3>
 {% for v,k in detail_info.items %}
    <h1>{{ v }}---{{ k }}</h1>
    <h1>{{ detail_info }}</h1>
 {% endfor %}

然后就可以显示不同的页面了

向视图里面传递两个参数 这里传递nid就得写nid不能改

url(r‘^detail-(?P<nid>\d+)-(?P<uid>\d+).html/‘, views.detail),

这两个参数在views.py的显示位置就可以随意的切换

def detail(request, uid, nid):
    print(uid,nid)
    detail_info = USER_DICT[nid]
    return render(request, ‘detail.html‘, {‘detail_info‘: detail_info})

输出的结果 就是对应的url  不会变

def func(*args):
    (1,2,3,4) 元祖的方式来保存的
    print(args)
func(1, 2, 3, 4)
def func(**kwargs):
    print(kwargs)  这里是以键值对的方式存放的
func(‘k1‘ = 1, ‘k2‘= 2,‘k3‘ = 3)

Orm 映射

创建语句

首先在models里创建一个表

然后在views里倒入这个表

from app01 import models

之后写方法就行了

第一种   推荐第一种  数据表的添加

dic = {‘username‘:‘tom‘, ‘userpwd‘:123}
    models.UserInfo.objects.create(**dic)  # 支持已字典的方式保存

models.UserInfo.objects.create(username=‘root‘,userpwd=‘123‘)

第二种

obj = models.UserInfo(username=‘xiaoming‘, userpwd=‘123‘)
   obj.save()

查询语句

def orm(request):

res = models.UserInfo.objects.all()

res = models.UserInfo.objects.filter(id=0)  所有的数据
     # ,QuerySet => Django[]   查询所有的数据
     for v in res:
           print(v.id, v.username, v.userpwd)
      return HttpResponse(‘ok‘)

Filter   就类似是where

res = models.UserInfo.objects.filter(id__gt=2)  查询id大于2的

删除  这个表的id里的值是5的数据

models.UserInfo.objects.filter(id=5).delete()

# 更新   密码都更新成6666
models.UserInfo.objects.all().update(userpwd=666)

判断用户的登录一般是两种

def login(request):
    if request.method == ‘GET‘:
        return render(request, ‘login.html‘)
    elif request.method == ‘POST‘:
        v = request.POST.get(‘user‘)
        p = request.POST.get(‘pwd‘)  一种是判断数量 大于0说明存在
        obj = models.UserInfo.objects.filter(username=v, userpwd=p).first()
        obj = models.UserInfo.objects.filter(username=v, userpwd=p).count()

print(obj)   # <QuerySet []>
        if obj:# 一般都是用 first  来判断
            return redirect(‘/‘)
        else:
            return render(request, ‘login.html‘)
        return render(request, ‘login.html‘)

else:
        return redirect(‘/‘)

时间: 2024-10-11 18:02:20

django的CURD应用的相关文章

Python Django 开发 3 数据库CURD

上一篇表建好后开始对数据进行CURD操作 dos输入: >>>python manage.py shell 以下的命令都是在shell中测试 (C)增: 1 >>>import myLesson import Blog 2 >>>b = Blog(name = 'Frist Blog', tagline = 'All') 3 >>>b.save() 4 >>>b.id 5 1 操作都是以对象.save()的方式来保存

Django数据库的增删改查

通过一个实例学习Django数据库的增删改查 Django - 路由系统 url.py - 视图函数 views.py - 数据库操作 models.py - 模板引擎渲染 - HttpReponse(字符串) - render(request,'/path/a.html',{'name':'root'}) 一.示例:用户基本CURD 1.数据库设计 id hostname ip port status 2.功能的实现 创建  project (pycharm) django-admin sta

day19 django继续

上节回顾 django - 路由系统:url.py - 视图函数:views.py - 模板引擎渲染 - HttpResonse(字符串) - render(request,'index.html')   渲染html给客户端 - 数据库操作:models.py 一.基本的数据库操作 小例子:实现数据的基本增删改查(CURD) 前戏: 1. 数据库设计 id                 hostname                   ip                 port   

跟我一起Django - 01 安装和初始化

跟我一起Django - 01 安装和初始化 python环境 C:\Python27\Lib\site-packages>python --versionPython 2.7.5 安装setuptools 下载脚本:https://bootstrap.pypa.io/ez_setup.py python ez_setup.py django环境 下载:https://www.djangoproject.com/download/1.7/tarball/ 解压缩后进入目录: python set

Python【第十九课】Django缓存,信号,序列化,抽屉页面分析

本节内容 models操作 Django的缓存 1.1 models操作 单表查询: curd(增删改查) 多表查询: # 一次性查出所有的数据,进行一次跨表查询  只能在有ForeignKey的表中正向使用, select_realated(): 进行一次跨表查询 user_list = Models.UserInfo.objetcts.all() for row in user_list: print(row.username,row.email,row.part_id,row.part.t

Django之知识总结

1. 课程介绍 - 数据类型 - 函数 - 面向对象三大特性:继承,封装,多态 - socket:本质传输字节:所有网络通信都基于socket - 数据库设计:单表.FK.M2M (自己作业:自己领域设计表,相亲网站) - 会用:html/css/js/bootstrap2. Http知识 基于Socket 浏览器(格式一): Web服务器(格式一): MySQL客户端(格式二): MySQL服务端(格式二): 本质: socket = socket.socket() socket.connec

Python学习之旅—Django基础

前言  前段时间业务比较繁忙,没时间更新博客,从这周开始将继续为各位更新博客.本次分享的主题是Django的基础部分,涵盖Django MTV三部分,并通过一个简单的班级管理系统来说明如何使用Django进行开发,好啦,开始今天的主题吧! 一.浅谈MVC.MTV和MVVM 要学习Django,我们很有必要了解下MVC,MTV和MVVM三种模式. [001]MVC MVC(Model View Controller 模型-视图-控制器)是一种Web架构的模式(本文不讨论桌面应用的MVC),它把业务

Django学习目录

1. DJango基础,其中包括django的请求流程,URLConf的使用,template和views的介绍,以及models中CURD操作等 2. Django进阶篇,其中包括Django中FVB和CVB,models ForeignKey,M2M,聚合查询,DjangoFrom,中间件等 原文地址:https://www.cnblogs.com/yanlinux/p/9119325.html

Django ORM和SQLAlchemy类比

ORM:对象关系映射,是通过代码和数据库实现交互的一种映射关系 Django ORM:使用活动记录实现(active record) 数据库中每一行(记录)都映射代码中的一个对象 框架可以查看数据库模式(schema) 适合CURD操作 自动创建ID主键 默认自动提交 SQLAlchemy:使用数据映射器实现 数据库结构和对象之间是分离的, 采用持久层保持与数据库的交互 (保存操作对象) 代码无需知道数据库整个关系结构 (代码层面与数据库结构没有直接关系) 适合业务规则比较多,较复杂场景(灵活可