zoukankan      html  css  js  c++  java
  • django知识

    1创建项目
    再工作空间目录下执行 django-admin statrproject
    2.创建app
    在项目的目录下执行 python manage.py startapp
    3.将自己创建的app配置到项目中
    在项目settings.py添加
    #配置需要的app
    INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp001', 自己加的
    ]
    4.写程序
    在app运用中定义视图函数 views.py
    Def fun(req):
    #可执行代码
    Return render/redirect()
    from django.shortcuts import render

    # Create your views here.
    '''
    定义视图函数
    '''
    def test(request):
    print('123456')
    return render(request,'test.html')

    5.在项目下的urls文件中配置url
    1.文件中引入自己的app的views模块
    from django.conf.urls import url
    from django.contrib import admin
    from django.urls import path
    from myapp001 import views

    urlpatterns = [
    url(r'^admin/', admin.site.urls),
    #设置自己的urls
    path('test/', views.test)
    ]

    启动服务 python manage.py runserver
    6.访问自定义视图函数
    http://127.0.0.1:8080/url
    7.模版页面
    在app应用中创建templates文件夹,再此文件夹中创建html文件

    1.在app下templates下创建一个login.html文件如下
    2.<!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>
    <form action="" methon="get">
    帐号: <input type="text" name="userAcc" PLACEHOLDER="请输入帐号" required>
    <br>
    密码: <input type="password" name="userpass"><br>
    <input type="submit" value="登入">
    </form>
    </body>
    </html>
    3.然后在APP的views.py下
    4.def loginpage(req):
    return render(req,'login.html')
    '''
    页面访问的方法
    pageName 页面名 模版名
    访问此函数,地址栏有对应的参数值 restFulurl
    '''
    '''def topage(request,pageName):
    return render(request,pageName)
    '''
    urlpatterns = [
    url(r'^admin/', admin.site.urls),
    #设置自己的urls

    path('test/', views.test),
    path('page/<str:pageName>', views.topage),
    path('loginpage/', views.loginpage),
    ]
    两个方式访问http://127.0.0.1:8000/loginpage/
    http://127.0.0.1:8000/page/login.html

    2.数据交互
    页面提交方式是get
    <form action="/user/login" method="get">
    帐号: <input type="text" name="userAcc" PLACEHOLDER="请输入帐号" required>
    <br>
    密码: <input type="password" name="userPass"><br>
    <input type="submit" value="登入">
    </form>
    Views视图函数:
    #登入操作
    def login(req):
    #获得客户提交的数据
    userAcc= req.GET.get('userAcc',None)
    userPass= req.GET.get('userPass',None)
    print(userAcc+'===='+userPass)
    if 'admin'== userAcc and '123456'== userPass:
    print('帐号密码存在')
    return render(req, 'test.html')
    return render(req, 'login.html')
    Get 1.表单提交 2.访问超链接 3地址栏直接访问
    Post form表单提交 django中post提交防止跨域请求csrf_token
    如果提示APPEND_SLASH
    错误是在项目setting中加入
    USE_TZ = True
    APPEND_SLASH=False
    Post提交表单中加入
    {% csrf_token %}
    <form action="/user/reg/" method="post">
    {% csrf_token %}
    帐号: <input type="text" name="userAcc" PLACEHOLDER="请输入帐号" required>
    <br>
    密码: <input type="password" name="userPass"><br>
    确认密码: <input type="password" ><br>
    地址:<select name='addr'>
    <option value='北京'>北京</option>
    <option value='上海'>上海</option>
    <option value='广东'>广东</option>
    <option value='湖北'>湖北</option>
    </select>
    <select name='addr'>
    <option value='北京'>北京</option>
    <option value='上海'>上海</option>
    <option value='广州'>广东</option>
    <option value='武汉'>湖北</option>
    </select>
    <input type="submit" value="注册">
    </form>

    Views中写:再urls文件配置path
    path('user/reg/', views.reg),
    def reg(req):
    userAcc = req.POST.get('userAcc')
    addr = req.POST.getlist('addr')
    print(userAcc)
    print(addr)
    return render(req, 'login.html')


    请求转发响应重定向:
    def testrender(req):

    context=dict()#字典类型
    context['name']='wenkeliang'
    context['hobby']=['吃','玩游戏']
    return render(req,'testrender.html',context=context) #请求转发给客户端传递数据

    #重定向
    def testredirect(req):
    return redirect('/page/login.html')
    请求转发可以传递数据到模版页面最后展示给客户端
    页面中testrender.html
    <body>
    请求转发
    {{ name }}<br>
    {{ hobby }}
    </body>


    Session设置
    Session使用djnago依赖于表
    执行python manage.py migrate
    Setting中

    SESSION_COOKIE_AGE = 60 * 30 #30分钟
    SESSION_EXPIRE_AT_BROWSER_CLOSE = True #浏览器关闭时SESSION失效

    Session中存储数据
    Req.session[‘key’]=值
    Html模版中显示数据
    模版页面取数据 {{request.session.key}}
    Views中获得session中的数据 request.session.get(‘key’)

    模版 如何显示数据
    常用标签 for if标签 ifequals ifnotequals include

    1.views中请求转发
    1.'''
    模版中复杂数据展示
    '''
    def testTemplate(req):
    cont=dict() #创建字典类型
    cont['userinfo']={'name':'温科良','age':'75','sex':'女'}
    cont['infos']=[{'name':'温科良','age':'30','sex':'男','hobby':['吃','玩游戏']},
    {'name':'张三','age':'30','sex':'男','hobby':['吃','爬山']},
    {'name':'李四','age':'30','sex':'男','hobby':['吃','睡觉','看电影']}]
    #cont={'userinfo':{'name':'温科良','age':'30','sex':'男'},'infos'=[{'name':'温科良','age':'30','sex':'男','hobby':['吃','玩游戏']},
    # {'name':'张三','age':'30','sex':'男','hobby':['吃','爬山']},
    # {'name':'李四','age':'30','sex':'男','hobby':['吃','睡觉','看电影']}]
    return render(req,'testTemplate.html',context=cont)
    2.模版中显示
    <body>
    显示数据<br>
    {{userinfo}}<br>
    {# 显示字典中数据 #}
    姓名 {{userinfo.name}} 年龄 {{userinfo.age}}性别 {{userinfo.sex}}
    {# 显示list类型数据 #}<br>
    <table border="1">
    <tr><td>姓名</td><td>年龄</td><td>性别</td><td>hobby</td></tr>
    {% for us in infos %}
    <tr><td>{{us.name}}</td><td>{{us.age}}</td><td>{{us.sex}}</td><td><!--{{us.hobby}} --> {% for ho in us.hobby %}{{ho}}.{%endfor%}</td></tr>
    <br>
    {%endfor%}

    </table>
    <hr>
    ---------------------if--------------------
    {{userinfo.sex}}<br>

    男<input type="radio" name="sex" {% if userinfo.sex == "男" %} checked {%endif%}>
    女<input type="radio" name="sex" {% if userinfo.sex == "女" %} checked {%endif%}><br>
    年龄范围 {{userinfo.age}}<br>
    {% if userinfo.age >= 60 %}
    老年人
    {% elif userinfo.age >= 30 and userinfo.age <= 60 %}
    中年人
    {%else%}
    青年
    {%endif%}
    </body>
    </html>

    模型Model 使用mysql
    1.安装mysql相关模块 pip install pymysql
    2.djnago项目setting文件中配置数据库
    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'hots':'106.55.94.219',
    'port':3306,
    'password':'wenkeliang1020',
    'NAME': 'good',
    }
    }

    3.写模型对应
    #定义模型对象
    class userinfo(models.Model):
    '''
    1. 用户
    列 类型 需求
    用户编号 varchar pk
    用户帐号 varchar unique
    用户密码 varchar
    生日 date
    性别 varchar
    '''
    #属性定义
    userid=models.BigIntegerField(primary_key=True) #设置主键
    useraccount=models.CharField(max_length=50,unique=True)
    userpass=models.CharField(max_length=30)
    userbirth=models.DateField()
    usersex=models.CharField(max_length=4)
    class Meta:
    db_table='userinfotable'
    pass
    在项目文件下__init__.py
    import pymysql
    pymysql.install_as_MySQLdb()

    4.创建模型对象
    Python manage.py makemigrations
    4.创建表
    Python manage.py migrate
    多对多关系创建
    1.from django.db import models

    # Create your models here.
    #定义模型对象
    class userinfo(models.Model):
    '''
    1. 用户
    列 类型 需求
    用户编号 varchar pk
    用户帐号 varchar unique
    用户密码 varchar
    生日 date
    性别 varchar
    '''
    #属性定义
    userid=models.BigIntegerField(primary_key=True) #设置主键
    useraccount=models.CharField(max_length=50,unique=True)
    userpass=models.CharField(max_length=30)
    userbirth=models.DateField(null=True)
    usersex=models.CharField(max_length=4)

    pros=models.ManyToManyField('Product')#用户和商品多对多管

    class Orderinfo(models.Model):
    '''
    3. 订单
    列 类型 需求
    订单编号 varchar pk
    下单日期 datatime
    订单金额 float
    用户编号 fk


    '''


    orderid = models.CharField(primary_key=True, max_length=100)
    orderDate = models.DateTimeField(auto_now=True)
    orderMon = models.FloatField()
    userinfo = models.ForeignKey(userinfo, on_delete=models.CASCADE) # 设置外键关联
    #class shopinginfo(models.Model):
    '''
    2.商品
    列 类型 需求
    商品编号 varchar pk
    商品名称 varchar
    商品单价 float
    商品图片 varchar
    '''
    #shopingid=models.CharField(primary_key=True, max_length=100)
    #shopingmingcheng=models.CharField(max_length=50,unique=True)
    #shopingdanjia=models.FloatField(
    #商品模型
    class Product(models.Model):
    ProId=models.BigAutoField(primary_key=True) #商品编号 自增
    ProName=models.CharField(max_length=200)#商品名称
    ProPrice=models.FloatField(default=0.0)#商品单价
    ProImg=models.CharField(max_length=200)#商品图片
    #用户购物车 m:m关系设置

    第二种

    from django.db import models

    # Create your models here.
    #定义模型对象
    class userinfo(models.Model):
    '''
    1. 用户
    列 类型 需求
    用户编号 varchar pk
    用户帐号 varchar unique
    用户密码 varchar
    生日 date
    性别 varchar
    '''
    #属性定义
    userid=models.BigIntegerField(primary_key=True) #设置主键
    useraccount=models.CharField(max_length=50,unique=True)
    userpass=models.CharField(max_length=30)
    userbirth=models.DateField(null=True)
    usersex=models.CharField(max_length=4)

    class Orderinfo(models.Model):
    '''
    3. 订单
    列 类型 需求
    订单编号 varchar pk
    下单日期 datatime
    订单金额 float
    用户编号 fk


    '''


    orderid = models.CharField(primary_key=True, max_length=100)
    orderDate = models.DateTimeField(auto_now=True)
    orderMon = models.FloatField()
    userinfo = models.ForeignKey(userinfo, on_delete=models.CASCADE) # 设置外键关联
    #class shopinginfo(models.Model):
    '''
    2.商品
    列 类型 需求
    商品编号 varchar pk
    商品名称 varchar
    商品单价 float
    商品图片 varchar
    '''
    #shopingid=models.CharField(primary_key=True, max_length=100)
    #shopingmingcheng=models.CharField(max_length=50,unique=True)
    #shopingdanjia=models.FloatField(
    #商品模型
    class Product(models.Model):
    ProId=models.BigAutoField(primary_key=True) #商品编号 自增
    ProName=models.CharField(max_length=200)#商品名称
    ProPrice=models.FloatField(default=0.0)#商品单价
    ProImg=models.CharField(max_length=200)#商品图片
    #用户购物车 m:m关系设置
    class UserGoods(models.Model):
    user=models.ForeignKey(userinfo,on_delete=models.DO_NOTHING)
    pro=models.ForeignKey(Product,on_delete=models.DO_NOTHING)
    Ajax
    Views:

    前端:

    Json格式获取

  • 相关阅读:
    JS实现对Date Range的认证
    SharePoint 用SafeControl的方式创建能够重复利用的Control
    设计模式详解(链接)
    Asp.net MVC3中进行自定义Error Page
    手动将自定制的WebPart部署到 SharePoint 2010 中
    获取 SharePoint 2010 中所有的User Profile Service Application
    自定义Data Service Providers — (5)最小化的运行时服务
    温总理对软件工作者的勉励
    自定义Data Service Providers —(9)关系
    自定义Data Service Providers — (7)交互式查询
  • 原文地址:https://www.cnblogs.com/wenyeqing/p/13581330.html
Copyright © 2011-2022 走看看