Django之前端ajax请求数据

POST请求:

$.ajax({
     type:'POST',
     url:'{% url 'operations:user_ask' %}',
     data:{
         'name':name,
         'phone':phone,
         'course':course,
         'csrfmiddlewaretoken':'{{ csrf_token }}'
     },
     success:function(data){
         console.log(data)
     }
 })

Form配置,编写验证规则

from django import forms
from .models import UserAsk
class UserAskForm(forms.ModelForm):
    class Meta:
        model = UserAsk
        #使用字段较少的话可以单独列出来
        #fields = ['name','phone','course']
        #使用字段较多的话,可以将不需要的字段排除出去
        exclude = ['add_time']
        #如果用到了全部字段,可以用下面的方法
        #fields = '__all__'
    #添加自定义规则
    def clean_phone(self):
        #重新去cleaned_data中将需要的值给取出来
        phone = self.cleaned_data['phone']
        #建立正则对象
        com = re.compile('^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))\\d{8})$')
        #如果有返回值,则表示验证成功
        if com.match(phone):
            return phone
        else:
            #验证失败
            raise forms.ValidationError('手机号填写错误')

后台处理:
urls.py中编写路由

from django.urls import path
from apps.operations import views
app_name = 'operations'

urlpatterns = [
	#两种接口编写方式对应两种路由的写法
    path('user_ask/', views.user_ask, name='user_ask'),
    path('user_ask/', views.UserAskView, name='user_ask'),
]

views.py中编写接口逻辑

from django.shortcuts import render,HttpResponse,redirect
from .forms import UserAskForm
from django.http import  JsonResponse
from django.views.generic import View
#两种编写接口的方式
#函数式
def user_ask(request):
    user_ask_form = UserAskForm(request.POST)
    if user_ask_form.is_valid():
        #form实例可以直接保存提交,不需要单独写,保存form就相当于保存model
        user_ask_form.save(commit=True)
        return JsonResponse({'status':'ok','msg':'请求成功'})
    else:
        return JsonResponse({'status': 'fail', 'msg': '请求失败'})
        
#类式
class UserAskView(View):
	#需要严格表明请求方式
	def get(self,request):
		#里面的内容和函数式相同
		user_ask_form = UserAskForm(request.POST)
        if user_ask_form.is_valid():
            #form实例可以直接保存提交,不需要单独写,保存form就相当于保存model
            user_ask_form.save(commit=True)
            return JsonResponse({'status':'ok','msg':'请求成功'})
        else:
            return JsonResponse({'status': 'fail', 'msg': '请求失败'})
     def post(self,request):
     	...

GET请求

$.ajax({
    type:'GET',
    url:"{% url 'operations:user_love' %}",
    data:{
        'love_id':love_id,
        'love_type':love_type
    },
    success:function(data){
        if(data.status == 'ok'){
            $('#love').text(data.msg)
        }
    }
})

后端配置

#用户搜藏
def user_love(request):
    love_id = request.GET.get('love_id','')
    love_type = request.GET.get('love_type','')
    love_man = request.user
    if love_id and love_type:
        #表里查看是否有当前搜藏的信息
        love = UserLove.objects.filter(love_id=int(love_id),love_type=int(love_type),love_man=love_man)
        if love:
            #根据表里查到的搜藏状态去进行处理
            if love[0].love_status:
                # 取消搜藏
                love[0].love_status = False
                love[0].save()
                return JsonResponse({'status':'ok','msg':'收藏'})
            else:
                # 搜藏
                love[0].love_status = True
                love[0].save()
                return JsonResponse({'status': 'ok', 'msg': '取消收藏'})
        else:
            a = UserLove()
            a.love_id = int(love_id)
            a.love_type = int(love_type)
            a.love_status = True
            a.love_man = love_man
            a.save()
            return JsonResponse({'status': 'ok', 'msg': '取消收藏'})
    else:
        return JsonResponse({'status': 'fail', 'msg': '请求失败'})
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值