Django和小程序初级代码

Django刚开始:

django-admin startproject HelloWorld 先创建一个Django项目
python manage.py runserver 启动服务器
调节视图views和urls路由

django 常用命令

django-admin startproject 项目名称 新建一个项目
python manage.py runserver 在Django默认端口启动
python manage.py startapp app名字 创建APP应用
python manage.py makemigrations 生成迁移文件
python manage.py migrate 使用迁移文件生成数据库结构
python manage.py createsuperuser 创建超级用户
python manage.py dbshell 开启数据库
python manage.py dbshell 进入shell模式,试验一些代码

微信开发者工具刚开始:

先进入微信官网点击此处跳转到页面注册,然后获取APPID

创建新项目
在这里插入图片描述
这样子就注册好了一个微信开发者工具

微信开发者工具九宫格

下面是js代码
在这里插入图片描述
下面是九宫格的wxml文件代码
在这里插入图片描述
通过bindtap方法来获取数据grids,第14行是解析
当然也可以从后台接受数据来显示,需要前后端的配合
后端代码如下

# def apps(request):  # 传递列表
#     return JsonResponse(['微信','支付宝'],safe=False)

# def apps(request):  # 传递字典
#     return JsonResponse({'name':['微信','支付宝','钉钉']},safe=True)

# def apps(request):  # 传递列表套字典
#     return JsonResponse([{'name': '微信'}, {'name': '支付宝'}, {'name': '钉钉'}], safe=False)

前段页面代码如下:

<view class="page__bd">
        <view class="weui-grids">
            <block wx:for="{{grids}}" wx:key="*this">
                <navigator url="/pages/" class="weui-grid" hover-class="weui-grid_active" data-index="{{index}}" bindtap="switch_page">
                    <image class="weui-grid__icon" src="/images/icon_tabbar.png" />
                    <view class="weui-grid__label">{{ item.app.name }}</view>
                    <!-- <view class="weui-grid__label">{{ item.app.release_time }}</view>
                    <view class="weui-grid__label">{{ item.app.versions }}</view> -->
                </navigator>
            </block>
        </view>

前段js代码如下:

updateMenuData:function(){
    // 定义变量接受值
    // 谁直接调用到代码,谁就是this
    var appnames = this
    //去后台获取数据
    wx.request({
      url: app.globalData.appurl+app.globalData.appv+app.globalData.routeapp,
      success: function (res){
        //更新数据
        console.log('成功')
        console.log(res.data)
        appnames.setData({grids:res.data.publish})
      },
      fail:function(res){
        console.log(res.errMsg)
      }
    })
  },

前段接受后端传递过来的cookie

需要前段接受,后端传递
前段js代码如下,接受了后端传递的数据,并且保存,如果不成功会在控制台打印失败:

getCookie:function(){
    wx.request({
      url: 'http://127.0.0.1:8000/api/v1.0/testcookie/',
      success:function(res){
        var cookie = cookieUtil.getSessionIDFromResponse(res)
        console.log(cookie)
        //保存cookie
        cookieUtil.setCookieToStorage(cookie)
      }	
    })
  }, 
  sendCookie:function(){
    var newcookie = cookieUtil.getCookieFromStorage()
    var header = {}
    header.Cookie = newcookie
    wx.request({
      url: 'http://127.0.0.1:8000/api/v1.0/testcookie2',
      header:header,
      success:function(res){
        console.log(res.data)
      }
    })
  },
  authorisation:function(){
    wx.login({
      success:function(res){
        // res.code
        wx.request({
          url: 'http://127.0.0.1:8000/api/v1.0/testcookie3/',
          method:'POST',
          data:{
            code:res.code,
            userInfos:app.globalData.userInfo
          },
          success:function(res){
            wx.showToast({
              title: '认证成功',
            })
            var nickname = app.globalData.userInfo
            console.log('名字', nickname)
            // 获取返回来的session
            var cookie = cookieUtil.getSessionIDFromResponse(res)
            cookieUtil.setCookieToStorage('cookieget',cookie)
          }
        })
      }
    })

后端代码如下(views)

class CookieTest(View):
    # 发送数据
    def get(self, request):
        # print(dir(request))
        request.session['mykey'] = '我的值'
        return JsonResponse({'key': 'value'})


class CookieTest2(View):
    """
    这个视图负责接收cookie
    这是视图是由cookieTest复制而来
    """

    def get(self, request):
        # print(dir(request))
        print('11111', request.session['mykey'])
        print(request.session.items())
        return JsonResponse({'key2': 'value2'})

也可以在settings里面配置我们需要的东西:
国际化配置:时区,语言
TIME_ZONE = ‘Asia/Shanghai’ 时区
LANGUAGE_CODE = ‘zh-Hans’ 语言

小程序端获取用户的登陆信息等,后台Django获取数据并且保存

前段代码需要获取用户登陆信息,并且发送数据给后台,后端需要接受前段传递过来的数据,并且保存到数据库中
前段js代码如下:

authorisation:function(){
    wx.login({
      success:function(res){
        // res.code
        wx.request({
          url: 'http://127.0.0.1:8000/api/v1.0/testcookie3/',
          method:'POST',
          data:{
            code:res.code,
            userInfos:app.globalData.userInfo
          },
          success:function(res){
            wx.showToast({
              title: '认证成功',
            })
            var nickname = app.globalData.userInfo
            console.log('名字', nickname)
            // 获取返回来的session
            var cookie = cookieUtil.getSessionIDFromResponse(res)
            cookieUtil.setCookieToStorage('cookieget',cookie)
          }
        })
      }
    })

后端代码如下(views):

class Authorize(View):
    def get(self, request):
        return HttpResponse('请求不支持GET方法')

    def post(self, request):
        bodystr = request.body.decode('utf-8')
        bodydict = json.loads(bodystr)
        code = bodydict.get('code')
        userinfo = bodydict.get('nackname')
        print(code)
        print(userinfo)
        appid = secret_setshezhi.APPID
        secret = secret_setshezhi.SECTER_KEY
        # 发起请求
        url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret + '&js_code=' + code + '&grant_type=authorization_code'
        res = requests.get(url)
        res_dict = json.loads(res.text)
        print('res_dict', res_dict)
        openid = res_dict.get('openid')
        print('openid', openid)
        print('res_dict', res_dict)
        if not openid:
            return HttpResponse('失败')
        # 给这个用户赋予了一些状态
        request.session['openid'] = openid
        request.session['id_authorized'] = True
        # 将用户保存到数据库中
        if not models.User.objects.filter(openid=openid):
            new_user = models.User(openid=openid, nickname=userinfo)
            new_user.save()
        return HttpResponse('成功')

session可以过期

过期的session不可以登陆,需要重新登陆
简要讲解图片如下:
在这里插入图片描述
最后,我们可以通过用户的一些信息,来给小程序定制一些有个性化的内容,比如,我关心的城市,星座,运势什么的,也可以在聚合上使用接口api接受一些数据传递到我们的小程序上面
有什么错误的地方可以评论,谢谢批评
谢谢参阅,如侵删!

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值