• 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格式获取

  • 相关阅读:
    常见寻找OEP脱壳的方法
    Windows内核原理系列01
    HDU 1025 Constructing Roads In JGShining's Kingdom
    HDU 1024 Max Sum Plus Plus
    HDU 1003 Max Sum
    HDU 1019 Least Common Multiple
    HDU 1018 Big Number
    HDU 1014 Uniform Generator
    HDU 1012 u Calculate e
    HDU 1005 Number Sequence
  • 原文地址:https://www.cnblogs.com/wenyeqing/p/13581330.html
Copyright © 2020-2023  润新知