美文网首页
Django小项目:Hub交友

Django小项目:Hub交友

作者: 林瑕漓 | 来源:发表于2021-02-21 22:32 被阅读0次
项目结构:
B2`WYU6F)_`L3`~6}(SDV%6.png

功能集合

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


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


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


    @{@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 %}


<!doctype html>
<html lang="zh-CN">
  <head>
    <!-- 必须的 meta 标签 -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap 的 CSS 文件 -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">

    <title>Hub交友</title>
  </head>
  <body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="{% url 'home' %}">Hub交友</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>

<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">

  <li class="nav-item">
    <a class="nav-link" href="{% url 'user' %}">查询</a>
  </li>


</ul>
<form class="form-inline my-2 my-lg-0" method="POST" action="{%url 'user'%}">
    {% csrf_token %}
  <input class="form-control mr-sm-2" type="search"  name="user" aria-label="Search">
  <button class="btn btn-outline-success my-2 my-sm-0" type="submit">搜索</button>
</form>
</div>
</nav>
    <br/>
    <div class="container">
        {% block content %}
        {% endblock %}
    </div>


    <!-- JavaScript 文件是可选的。从以下两种建议中选择一个即可! -->

    <!-- 选项 1:jQuery 和 Bootstrap 集成包(集成了 Popper) -->
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-LCPyFKQyML7mqtS+4XytolfqyqSlcbB3bvDuH9vX2sdQMxRonb/M3b9EmhCNNNrV" crossorigin="anonymous"></script>

    <!-- 选项 2:Popper 和 Bootstrap 的 JS 插件各自独立 -->
    <!--
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.min.js" integrity="sha384-gRC4eoaRyQ8xv2X6Mnf+eOIrtON3wId3dAkwO0HQX26OrFBoLpjX/XWOJacSiZhL" crossorigin="anonymous"></script>
    -->
  </body>
</html>

数据库使用sqlite3

相关文章

  • Django小项目:Hub交友

    项目结构: 功能集合 主页显示用户的照片,姓名,github链接,点击访问,跳转到用户的github主页。GHR(...

  • 第2回-在Django中集成react项目

    创建时间:20161223 本章小目标 创建django项目 在django中使用react页面 实现django...

  • Django之旅:1

    包含内容 Django简介 Django环境搭建 Django创建项目 访问Django项目 Django简介 在...

  • Web框架:Django(学习——第一个项目)

    创建Django项目 打开PyCharm,创建项目,选择Django Django项目创建成功后 运行Django...

  • Django学习笔记(二)安装

    创建 Django 项目django-admin startproject 项目名称 Django 项目目录结构J...

  • 2019-05-05

    创建django项目:django-admin startproject + 项目名称(booktest)进入项目...

  • 2.1 第一个django项目

    第一个Django项目 创建Django项目: 创建项目:打开终端,使用命令:django-admin start...

  • Django创建项目

    创建项目 django-admin startproject + 项目的名称 例如------->django-...

  • 2019-05-05

    创建django项目: django-admin startproject + 项目名称(booktest) 进入...

  • 2019-05-05

    创建django项目: django-admin startproject + 项目名称(booktest)进入项...

网友评论

      本文标题:Django小项目:Hub交友

      本文链接:https://www.haomeiwen.com/subject/wsecfltx.html