91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

django 將表數據通過API展示到頁面上

發布時間:2020-07-19 21:09:55 來源:網絡 閱讀:2193 作者:zenge_blog 欄目:開發技術

需求:

我在learn這個app下創建了兩張表,其中一個表為user,我希望通過API,在頁面是展示這些數據,當用戶訪問指定的url時,將表中所有對象展示到頁面上。

先看learn/models.py文件代碼

#coding:utf8
from django.db import models
class Group(models.Model):
    Name = models.CharField(max_length=20)
    def user_list(self):
        return ','.join([i.Name for i in self.user_set.all()])
    def __unicode__(self):
        return self.Name

class User(models.Model):
    Name = models.CharField(max_length=20)
    Email = models.CharField(max_length=50)
    group = models.ManyToManyField(Group,blank=True)
    def __unicode__(self):
        return self.Name
    def group_list(self):
        return ','.join([i.Name for i in self.group.all()])


表中的數據如下

django 將表數據通過API展示到頁面上


我希望訪問一個url獲取到user表中的數據,像這樣:

django 將表數據通過API展示到頁面上

這種需求非常常見,比如公司有CMDB,我可以通過API去獲取某個表里面的數據,然后去添加監控什么的。


下面是具體的操作方法:

1、新建一個名為api的APP,并加入到settings.py文件中的INSTALLED_APPS中

django-admin startapp api

django 將表數據通過API展示到頁面上



2、在api這個app下,創建urls.py文件,并在mysite/usrls.py文件中include app/urls.py文件

django 將表數據通過API展示到頁面上



3、編輯api/views.py文件。創建一個函數,用來響應來自urls.py中定義的url的請求

#coding:utf8
from django.http import HttpResponse,JsonResponse
from django.shortcuts import render
from learn.models import *  ##別忘了從learn/models.py文件中導入User對象
# Create your views here.
def get_user(request):
    p = request.GET.get('Email')
    q = request.GET.get('group')
    user_list = []
    users = User.objects.all()
    if p:
        users = User.objects.filter(Email=p)
    if q:
        users = User.objects.filter(group__Name__icontains=q)
    for user in users:
        user_list.append({
            u'姓名': user.Name,
            u'郵箱': user.Email,
            u'所屬組': ','.join([i.Name for i in user.group.all()])
        })
    return JsonResponse(user_list,safe=False)

獲取表中所有對象

users = User.objects.all()

注意:由于User表中有多個對象,所以用User.objects.all()獲取到的是一個對象的集合,即列表。

這個集合是可以迭代的,可以用以下代碼,在按照自己的需求,展示數據

def get_user(request):
for user in users:
    user_list = []
    users = User.objects.all()
    user_list.append({
        u'姓名': user.Name,
        u'郵箱': user.Email,
        u'所屬組': ','.join([i.Name for i in user.group.all()])
        })
    return JsonResponse(user_list,safe=False)


4、編輯api/urls.py文件,

#coding:utf8
from django.conf.urls import url
from django.contrib import admin
from api.views import *
urlpatterns = [
    url(r'^get_user/', get_user),
]


5、訪問api,獲取user表中的數據

django 將表數據通過API展示到頁面上



6、獲取指定的用戶的信息

上面的api展示的user表中所有的對象,我們可以查詢指定的對象,并展示

#coding:utf8
from django.http import HttpResponse,JsonResponse
from django.shortcuts import render
from learn.models import *  ##別忘了從learn/models.py文件中導入User對象
# Create your views here.
def get_user(request):
    p = request.GET.get('Email')
    q = request.GET.get('group')
    user_list = []
    users = User.objects.all()
    if p:
        users = users.objects.filter(Email=p)
    if q:
        users = users.objects.filter(group__Name__icontains=q)
    for user in users:
        user_list.append({
            u'姓名': user.Name,
            u'郵箱': user.Email,
            u'所屬組': ','.join([i.Name for i in user.group.all()])
        })
    return JsonResponse(user_list,safe=False)
p = request.GET.get('Email')
q = request.GET.get('group')

獲取客戶端瀏覽器中url地址里面Email和group對應的值。

if p:
    users = User.objects.filter(Email=p)
if q:
    users = User.objects.filter(group__Name__icontains=q)

然后通過filter方法進行過濾。

user = User.objects.filter(Email="abc@qq.com")

獲取Email為abc@qq.com的對象。

如果是多對多關系的屬性,需要這樣寫

users = User.objects.filter(group__Name__icontains=q)

group__Name(中間是雙下劃線)表示user表中group字段的屬性鏈接到對應的Group表中的Name字段上。


如果想模糊查詢,可以使用icontains方法。Name后面是雙下劃線"_"

group__Name__icontains


7、查詢郵箱為“a@qq.com”的對象

django 將表數據通過API展示到頁面上

8、查詢所屬組的組名中帶有“CO”的

django 將表數據通過API展示到頁面上


9、組合查詢

查詢所屬組為COO,郵箱為a@qq.com的對象

django 將表數據通過API展示到頁面上



補充:

1、 QuerySet 查詢結果排序

User.objects.all().order_by('Name')
User.objects.all().order_by('-Name') ##在字段名前面加“-”,表示實現倒敘

這里我修改了表中用戶的姓名,如圖

django 將表數據通過API展示到頁面上


修改api/views.py代碼

django 將表數據通過API展示到頁面上


再次訪問api

django 將表數據通過API展示到頁面上



2、排除符合條件的對象

User.objects.all().order_by('Name').exclude(Name='www')

找出所有對象,但排除Name為‘www’的對象

django 將表數據通過API展示到頁面上

訪問api

django 將表數據通過API展示到頁面上

修改api/views.py后再次訪問,發現www這個用戶在頁面上不顯示了

django 將表數據通過API展示到頁面上

django 將表數據通過API展示到頁面上


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛阳市| 新巴尔虎左旗| 台中县| 康马县| 浦北县| 台北县| 临沧市| 忻城县| 封开县| 通化县| 乌兰浩特市| 杂多县| 新乡市| 黎川县| 东至县| 文化| 仁寿县| 石河子市| 休宁县| 雷山县| 宝应县| 新干县| 龙里县| 巨野县| 盐城市| 四平市| 蒙阴县| 永福县| 乐安县| 南昌市| 崇明县| 拜城县| 扶绥县| 开化县| 和田县| 弥渡县| 安达市| 庄浪县| 偃师市| 赫章县| 繁峙县|