1 DATABASES = { 2 'default': { 3 'ENGINE': 'django.db.backends.mysql', 4 'NAME': 'netdevops', 5 'USER': 'forgeek', 6 'PASSWORD': 'xxxxxx', 7 'HOST': '172.16.127.128', 8 'PORT': '3306', 9 'OPTIONS': {}, 10 'init_command': 'SET storage_engine=INNODB,' 11 'SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED, autocommit=1, names "utf8";', 12 } 13 }
# 建立mysql賬號(這裏的賬號信息要與settings配置文件中鏈接數據庫的配置信息保持一致)
mysql> alter user 'forgeek'@'%' identified with mysql_native_password by 'xxxx';
# 設置forgeek賬號密碼永不過時
mysql> alter user 'forgeek'@'%' identified by 'xxxx' password expire never;# 受權(這裏因爲測試環境我這邊分配權限比較大,你們能夠根據本身狀況設置)
grant all privileges on *.* to 'forgeek'@'%';
# 刷新權限
mysql> flush privileges;
# 驗證用戶的建立是否成功
mysql> select host,user,authentication_string from mysql.user;# 建立名爲netdevops的數據庫mysql> create database netdevops;
定義簡介:python
- 每一個模型都是一個python類,它是django.db.models.Model的子類
- 模型的每一個屬性都表明一個數據庫字段
- 綜上所述,Django爲您提供了一個自動生成的數據庫訪問API,詳細見官方文檔。
model與數據庫結構對應關係圖以下:mysql
![]()
這個小功能中咱們須要創建兩張表,一個保存用戶信息另外一個保存瀏覽器信息。考慮到一個用戶可能會有多個瀏覽器,所以須要創建一個一對多的關係。我這裏直接貼源碼好了,有不懂的直接留言好了。web
1 # coding=utf-8 2 from django.db import models 3 4 5 class UserIpInfo(models.Model): 6 ip = models.CharField(max_length=40, default='', verbose_name=u'IP地址', null=True) 7 time = models.DateTimeField(verbose_name=u'更新時間', auto_now=True) 8 9 class Meta: 10 verbose_name = u"用戶訪問IP地址表" 11 verbose_name_plural = verbose_name 12 db_table = "useripinfo" 13 14 15 class BrowseInfo(models.Model): 16 useragent = models.CharField(max_length=200, default='', verbose_name=u'用戶瀏覽器信息', null=True) 17 models.CharField(max_length=256, verbose_name=u'設備惟一ID', default='') 18 user_ip = models.ForeignKey("UserIpInfo", on_delete=models.CASCADE) 19 20 class Meta: 21 verbose_name = u"用戶瀏覽器信息表" 22 verbose_name_plural = verbose_name 23 db_table = "browseinfo"
1 # from django.shortcuts import render 2 from django.http import HttpResponse 3 from .models import * 4 import json 5 6 7 def user_ip_info(request): 8 # print('-----------------test/n', request.META) 9 ip_addr = request.META['REMOTE_ADDR'] 10 user_ua = request.META['HTTP_USER_AGENT'] 11 print(len(user_ua)) 12 13 user_obj = UserIpInfo.objects.filter(ip=ip_addr) 14 if not user_obj: 15 res = UserIpInfo.objects.create(ip=ip_addr) 16 ip_addr_id = res.id 17 else: 18 ip_addr_id = user_obj[0].id 19 20 BrowseInfo.objects.create(useragent=user_ua, user_ip=UserIpInfo.objects.get(id=ip_addr_id)) 21 22 result = { 23 "狀態": "Success!", 24 "信息": "User info", 25 "IP": ip_addr, 26 "瀏覽器": user_ua 27 } 28 29 return HttpResponse(json.dumps(result), content_type="application/json", charset="utf-8") 30 31 32 def user_infos(request): 33 ip_list = UserIpInfo.objects.all() 34 infos = {} 35 for item in ip_list: 36 infos[item.ip] = [b_obj.useragent for b_obj in BrowseInfo.objects.filter(user_ip_id=item.id)] 37 38 result = {"狀態": "Success!", "信息": infos} 39 40 return HttpResponse(json.dumps(result), content_type="application/json", charset="utf-8")
1 from django.urls import path 2 from . import views 3 4 urlpatterns = [ 5 path('send/', views.user_ip_info), 6 path('get/', views.user_infos), 7 8 ]
二、User 應用中urls.py:
1 from django.urls import path 2 from . import views 3 4 urlpatterns = [ 5 path('send/', views.user_ip_info), 6 path('get/', views.user_infos), 7 8 ]