django学习记录

将现有数据库导入到models.py中

python manage.py inspectdb > app/models.py

js实现定时刷新页面

Ajax轮询,Ajax长轮询和websocket(详细使用)

django shell 调试

python manage.py shell

python小问题

orders_num = ordersdate = orders_car_size = orders_price = []

会指向同一个内存地址QAQ

叫引用赋值

问题解决

访问不到写好的path

urlpatterns = [   path('addUsers/',views.add_users,name='add_users')#api/addUsers
]

检查path(‘path/‘)的斜杠

注释掉settings.py中的
MIDDLEWARE 的 ‘django.middleware.csrf.CsrfViewMiddleware’

连接mysql出错

django.db.utils.OperationalError: (2059) 解决办法

orm查询

https://www.cnblogs.com/chenxinming-top/p/9506857.html

引入bootstrap网站错位

可能原本就引入了(XD

异步加载数据

从mysql读取数据,然后放置到echarts中,效果如图

echarts js

<div id="main" style="width: 790px;height:600px;"></div>
    <script type="text/javascript">
      var develop_name_list = {{ develop_name_list|safe }};
      var develop_num_list = {{ develop_num_list|safe }};
      var myChart = echarts.init(document.getElementById('main'));
      var option = {
          grid: {containLabel: true},
          xAxis: {name: '数量'},
          yAxis: {
            type: 'category',
            data: develop_name_list
            },
          series: [
              {
                  type: 'bar',
                  encode: {x: 'amount',y: 'product'},
                  data: develop_num_list
              }
          ]
      };
      myChart.setOption(option);
    </script>

|safe是必须的,myChart.setOption(option);也是必须的,并且

yAxis: {
            type: 'category',
            data: develop_name_list
            },

的type:也一定时category==目前仅知道针对这个图可行==

使用bootstrap折叠面板之后在里面放置js不渲染

还没会,无解qaq

python模糊查询%问题

sql = ''' SELECT job_Name,description FROM history
                WHERE job_Name like "%%{}%%" and job_Name like "%%{}%%"'''.format('java','后端')

django后端开发

接收header或body

 获取正则匹配到的数据,num1未位置参数,num2为命名参数,
def index(request,num2=None, num1=None):
 print(num2)
 # 构造响应数据
 reNT')
 sp = HttpResponse('hello world')
 # 获取请求头
 header = request.META.get('HTTP_USER_AGE)
 # 获取地址
 path = request.path
 # 获取GET后面的数据(获取查询字符串数据)
 para = request.GET()
 # 获取json数据
 json_data = request.body
 data = eval(request.body.decode()).get('asd')
 data1 = json.loads(request.body).get('asd')
 # 获取表单数据
 form_data = request.POST
 # 获取请求方法
 method = request.method
 # 获取文件
 file_obj = request.FILES.get('image')
 return resp

token和cookie

参考资料

大部分api和web应用都用tokens,例如fb,google,推特,gihub

实现方法是JSON Web Tokens

详细-有案例-Django+JWT 实现 Token 认证

理解JWT(JSON Web Token)认证及python实践

python接口自动化(二十)–token登录(详解)

可用库:pyjwt

响应

所有响应包含三部分,状态码 code、数据 data、消息 msg
所有内容都在 data 里,msg 是附加的状态消息

最后用了简单方法:

#后端
def create_token(users_id,users_name):
    payload = {
        "iss": "parkingapp.com",
         "iat": int(time.time()),
         "exp": int(time.time()) + 86400 * 7,
         "users_id": users_id,
         "user_name": users_name,
    }
    token = jwt.encode(payload, 'secret', algorithm='HS256').decode('utf-8')
    json_dict_success = {'code': Httpcode.success,'token': str(token)}
    return JsonResponse(json_dict_success, json_dumps_params={'ensure_ascii': False})
<!-- js -->
$.ajax({
    type: 'POST',
    url: 'http://localhost:8000'+ add_users_api,
    data: {users_name: name,
            users_email: email,
            users_phone: phone},
    success: function(data) {
        if (201 === data.code){
            alert("注册成功!");
            localStorage.setItem("token", data.token);
        } else {
            alert("注册失败,请在检查网络后重试!");
        }
     },
    error: function(data) {
        alert("注册失败,请在检查网络后重试!")
     },
});

识别token

var token = localStorage.getItem('token');
console.log(token);
if (null === token){
    alert("请先登录或注册账户");
}
$.ajax({
    type: 'POST',
    url: 'http://localhost:8000'+ verify_token,
    data: {token: token},
success: function(data){
    alert('验证成功');
},
error: function(data){
    alert(data)
},
});    
def verify_token(request):
    token = request.POST.get('token',0)
    result = jwt.decode(token, 'secret', algorithm='HS256')

回传数据

一开始是

大佬推荐改成如下图,面向对象

问题

前端post数据到后端,后端接收到请求但无数据传递

可能因为跨域

跨越定义 :由于浏览器同源策略,凡是发送请求的url的协议(http和https)、域名(www.example.com,about.example.com)、端口(8010和8020)三者之间任意一个与当前页面地址不同则视为跨域。

https://www.cnblogs.com/randomlee/p/9752705.html


职业分类

技术

后端开发

java python php .net c# c++ C vb Delpho perl Ruby Hadoop Node.js 数据挖掘 自然语言处理 搜索算法 精准推荐 全栈 Go ASP Shell 其他

移动开发

HTML5 Android IOS WP

前端开发

web前端 Flash html5 javascript U3D COCOS2D-X

测试

测试工程师 自动化测试 功能测试 性能测试 测试开发 游戏测试 白盒测试 灰盒测试 手机测试 硬件测试 测试经理

运维

运维工程师 运维开发 网络工程师 系统工程师 it支持 idc CDN f5 系统管理员

DBA

mysql sqlserver oracle db2 mongoDB ETL

Hive 数据仓库

高端职业

技术经理 技术总监 架构师 cto 运维总监 技术合伙人 项目总监 测试总监 安全专家

项目管理

项目经理 项目助理

硬件开发

硬件 嵌入式 自动化 单片机 电路设计 驱动开发 系统集成 fpga开发 dsp开发 arm开发 pcb工艺 模具设计 热传导 材料工程师 精益工程师 射频工程师

企业软件

实施工程师 售前工程师 售后工程师 BI工程师

产品类

产品经理

产品经理 页面产品经理 移动产品经理 产品助理 数据产品经理 电商产品经理 游戏策划 产品实习生

产品设计师

网页产品设计 无线产品设计师

高端职位

产品部经理 产品总监

设计类

运营类

市场

来源:http://www.360doc.com/content/17/0520/09/43284313_655479904.shtml


本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

记一次转移环境上服务器 上一篇
cisco课程代码记录 下一篇