Django小项目:Hub交友

项目结构:
B2`WYU6F)_`L3`~6}(SDV%6.png

功能集合

  • 主页显示用户的照片,姓名,github链接,点击访问,跳转到用户的github主页。


    GHR(8LN~BJMN~_O9SQ3SKKO.png
  • 输入github的用户名,点击搜索按钮。页面立即跳转到该用户的详情页。展示该用户的姓名,公司,博客地址,点击博客地址跳转到用户个人博客。


    4$W@H3W22C~PPY@R7I}[email protected]
  • 主页点击查询按钮,页面跳转到用户列表页,展示所有搜索过的用户信息。


    @{@1US(41`5AQ2_)```1)`W.png
Django是一个python开源框架。
(M32AHUT`R8[D`913N(WPS1.png
MVC 模型
MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

MVC 以一种插件式的、松耦合的方式连接在一起。

  • 模型(M)- 编写程序应有的功能,负责业务对象与数据库的映射(ORM)。
  • 视图(V)- 图形界面,负责与用户的交互(页面)。
  • 控制器(C)- 负责转发请求,对请求进行处理。
但是在Django中,是MTV模型,本质和MVC一致。只是名称不一致。

图解

5`]W3EU`}9IU1L52`LLGB~R.png

用户通过浏览器向我们的服务器发起一个请求(request),这个请求会去访问视图函数:

a.如果不涉及到数据调用,那么这个时候视图函数直接返回一个模板也就是一个网页给用户。

b.如果涉及到数据调用,那么视图函数调用模型,模型去数据库查找数据,然后逐级返回。
视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。

开发环境

Win 10(64位)
Python 3.8.0
Django 3.1.7

编写Model.py

Django中通过模型(Model)映射到数据库,处理与数据相关的事务。

keithyang/models.py,输入如下代码:

python
from __future__ import unicode_literals


from django.db import models


# Create your models here.

查询列表信息 数据模型

class cal(models.Model):

    value_a = models.CharField(max_length=10)
    value_b = models.CharField(max_length=10)
    result =  models.CharField(max_length=10)



说明:每个模型(model)都被表示为 django.db.models.Model 类的子类,从它继承了操作数据库需要的所有方法。

数据迁移(Migrations)

每次models.py文件发生变化都需要执行2条指令

对模型的更改创建新的迁移表
python manage.py makemigrations
应用迁移到数据库中
python manage.py migrate

Views视图函数

Django 中视图即函数,path函数将url映射到视图

from django.shortcuts import render

import requests

import json
from .models import cal


# Create your views here.
def home(request):
    api_request = requests.get("https://api.github.com/users?since=0")
    api = json.loads(api_request.content)
    return render(request, 'home.html', {"api": api})


def user(request):
    # import requests
    if request.method == 'POST':
        user = request.POST['user']
        user_request = requests.get("https://api.github.com/users/" + user)
        user_name = json.loads(user_request.content)
        name = user_name['name']
        company = user_name['company']
        follower = user_name['followers']
        cal.objects.create(value_a=name, value_b=company, result=follower)

        return render(request, 'user.html', {'user_name': user_name})

    else:
        return Calllist(request)

# def addinfo(request):

def Calllist(request):
    data = cal.objects.all()
    # for data in spldata:
    #     name = data.value_a
    #     location = data.value_b
    #     follows = data.result

    return render(request, 'list.html', {'data': data} )




将url映射到视图

from django.urls import path
from . import views
urlpatterns = [
    path('', views.home, name="home"),
    path('user/', views.user, name="user"),
    path('list/', views.Calllist, name="list"),
]

Templates/base.html,home.html,user.html,list.html

Bootstrap中获取模板文件,编写home.html,user.html,list.html,
使用{% extends 'base.html'%}继承base.html文件。
{% block content %}




  
    
    
    

    
    

    Hub交友
  
  

    
{% block content %} {% endblock %}

数据库使用sqlite3

你可能感兴趣的:(Django小项目:Hub交友)