Django项目--用户管理系统(二)

展示导航信息

  • 设置导航之前,我们想要给他一个好看的样式

  • 导航条 https://v4.bootcss.com/docs/components/navbar/

  • 复制Supported content的内容

  • 来到 base.html的body部分

    #<body>
    	#粘贴
    	<nav class="navbar navbar-expand-lg navbar-dark bg-dark">  # light --> dark 背景颜色更深
      <a class="navbar-brand" href="#">Navbar</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 active">
            <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Link</a>
          </li>
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
              Dropdown
            </a>
            <div class="dropdown-menu" aria-labelledby="navbarDropdown">
              <a class="dropdown-item" href="#">Action</a>
              <a class="dropdown-item" href="#">Another action</a>
              <div class="dropdown-divider"></div>
              <a class="dropdown-item" href="#">Something else here</a>
            </div>
          </li>
          <li class="nav-item">
            <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
          </li>
        </ul>
        <form class="form-inline my-2 my-lg-0">
          <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
          <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
        </form>
      </div>
    </nav>
    	
    	<div class='container'> # CSS容器
    		{% block content %}
    		{% endblock %}
    	</div>
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kbXpsr50-1592669235743)()]

  • 删掉用不到的标签,更改标签名字,只留下 Navbar Link (之间在上面删掉,在对应位置更改即可)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ne3H432G-1592669235745)()]

接口介绍

  • https://api.github.com github直接提供的接口地址,这里有很多,我们随便进入一个[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OQ8sxDnx-1592669235747)()]
    - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8CMXXe1z-1592669235750)()]
    - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gBFHYVlv-1592669235753)()]
    - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qh2QkKXX-1592669235755)()]

  • 你也可以获取所有的用户,点击 list user[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e9qbeSCj-1592669235756)()]
    - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6OAxLc2A-1592669235757)()]

  • 还有很多接口 https://jsonplaceholder.typicode.com[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传()]

接口请求和解析

  • 我们把 https://api.github.com/users?since=135 看到的数据展示到我们的django项目 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xXDxRaLA-1592669235759)()]

  • 在app视图中请求数据

    # library/views.py
    from django.shortcuts import render # render 跳转到对应的页面
    
    # Create your views here.
    def home(request):
    
        import requests
        import json
        
        api_request = requests.get('https://api.github.com/users?since=0')
        api = json.loads(api_request.content)
        return render(request,'home.html',{'api':api})
    
  • 则home.html得接收上面传入的参数

    #library/templates/home.html
    
    {% extends 'base.html' %}
    {% block content %}
        <h1>hello word!!!</h1>
        {{api}}  # 接收数据
    {% endblock %}
    
    

- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3YB4UR5l-1592669235760)()]

  • 现在我们看到数据已经全部得到

展示数据信息

  • 我们从原网页可以看到,数据的显示方式整齐排列[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xOeQliZ8-1592669235761)()]

  • 所以我们用到 bootstrp 的 cards 进行创建每一个用户的信息卡片[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1fxgTlSo-1592669235761)()]

  • 我们就复制第一个模板内容,并且把我们的数据添加进模板相应位置

    # library/templates/home.html
    
    {% extends 'base.html' %}
    
    {% block content %}
    <h1>hello word!!!</h1>
    <div class="container">
        <div class="row">
            {% for x in api %} # 注意:{ 和 % 不能有空格
            <div class="col-sn">
                <div class="card" style="width: 18rem;">
                    <img src="{{x.avatar_url}}" class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">{{x.login}}</h5>
                        <p class="card-text">{{x.login}}的github</p>
                        <a href="{{x.html_url}}" class="btn btn-primary">访问</a>
                    </div>
                </div>
            <br>
            </div>     
            {% endfor %}
        </div>
    </div>
    {% endblock %}
    
  • 具体结果读者可以自行运行查看

搜索页面跳转

  • 来到library/urls.py,修改如下:

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('',views.home,name='home'),
        path('user/',views.user,name='user'),
    ]
    
  • 来到library/templates,建立user.html,编辑如下内容

    {% extends 'base.html' %}
    
    {% block content %}
    <h1>hello {{user}}!!!</h1>
    
    {% endblock %}
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EEkxnJlT-1592669235762)()]

  • 来到 base.html

    # 找到提交表单
    <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" placeholder="Search" aria-label="Search">
              <button class="btn btn-outline-success my-2 my-sm-0" type="submit">搜索</button>
            </form>
    
  • 来到 library/views.py

    def user(request):
        user = request.POST['user']
        return render(request,'user.html',{'user':user})
    

获取搜索数据

  • 先完成头部标签的点击跳转

    <a class="navbar-brand" href="{% url 'home' %}">Library</a>
    
    <a class="nav-link" href="{% url 'user' %}">查找</a>
    
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZPIdqNwz-1592669235763)()]

  • 现在我们发现如果输入内容点击搜索框可以达到目的,但是直接点击查找我们没有任何动作,因而,来到 library/views.py 设置

    # 进行判断
    def user(request):
        if request.method=='POST':
            user = request.POST['user']
            return render(request,'user.html',{'user':user})
    
        else:
            notfound = '请在搜索框输入您要搜索的用户 >>>'
            return render(request,'user.html',{'notfound':notfound}) # 此时需要到 user.html 接收参数notfound
    
  • user.html

    {% extends 'base.html' %}
    
    {% block content %}
        {% if notfound %}
    
            <h2>{{notfound}}</h2>
        {% else %}
            <h1>hello {{user}}!!!</h1>
        {% endif %}
        
    {% endblock %}
    
  • 现在解决了我们的问题

  • 我们看

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VdGfigYI-1592669235764)()]

  • 接下来 显示我们提交的用户的信息,修改我们的 views.py中的user函数

    def user(request):
        if request.method=='POST':
            import requests
            import json
            user = request.POST['user']
            user_request = requests.get('https://api.github.com/users/{}'.format(user))
            user_info = json.loads(user_request.content)
            return render(request,'user.html',{'user_info':user_info})
        else:
    
            notfound = "请在搜索框输入您要搜索的用户 >>>"
            return render(request,'user.html',{'notfound':notfound}) # 提交全部数据
    
  • 再user.html设置接收格式,拷贝一份前面的 cards模板

    {% extends 'base.html' %}
    
    {% block content %}
    
        {% if notfound %}
            <h2>{{notfound}}</h2>
        {% else %}
    
            <div class="card" style="width: 18rem;">
                <img src="{{user_info.avatar_url}}" class="card-img-top" alt="...">
                <div class="card-body">
                    <h5 class="card-title">{{user_info.name}}</h5>
                    <p class="card-text">location:{{}user_info.location}</p>
                    <p class="card-text">email:{{}user_info.email}</p>
                    <p class="card-text">public_repos:{{}user_info.public_repos}</p>
                    <p class="card-text">public_gists:{{}user_info.public_gists}</p>
                    <p class="card-text">followers:{{}user_info.followers}</p>
                    <p class="card-text">followering:{{}user_info.followering}</p>
                    <p class="card-text">created_at:{{}user_info.created_at}</p>
                    <p class="card-text">updated_at:{{}user_info.updated_at}</p>
                    <a href="{{user_info.html_url}}" class="btn btn-primary">访问</a>
                </div>
            </div>
        {% endif %}
        
    {% endblock %}
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u7INcbi8-1592669235765)()]

​			[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SuxJUtyy-1592669235766)()]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8kNF1oY9-1592669235767)()]

C:\Users\21323\AppData\Roaming\Typora\typora-user-images\image-20200620234849535.png

over

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园舆情管理系统是一个基于Django开发的实际项目,它的主要目标是帮助学校管理和监控校园内的舆情信息,包括学生的投诉、教师的评价、校园新闻等。下面将介绍该系统的主要功能和实现方式。 1. 用户管理:系统支持多种类型的用户,包括学生、教师、管理员等。用户可以通过注册和登录来使用系统,并且根据用户类型来限制其访问权限。 2. 舆情信息发布:用户可以发布与校园相关的舆情信息,包括投诉问题、教师评价、校园新闻等。用户可以上传附件、添加标签和描述,以便更好地组织和管理舆情信息。 3. 舆情信息管理:管理员可以对发布的舆情信息进行审核和管理,包括审核投诉问题、处理教师评价、编辑校园新闻等。管理员可以通过系统提供的界面对舆情信息进行分类、标记、筛选等操作。 4. 舆情信息展示:系统提供多种方式来展示校园舆情信息,包括热门舆情排行榜、舆论分析报告、关键词云图等。用户可以通过这些展示方式来了解校园的舆情动态。 5. 舆情信息监测:系统可以对校园内的舆情信息进行实时监测,通过自然语言处理和数据挖掘等技术来识别和分析舆情信息。这样可以及时发现和处理校园的舆情问题。 该校园舆情管理系统使用Django框架进行开发,可以快速构建起一个功能完善的校园舆情管理平台。Django框架提供了丰富的功能和模块,包括用户管理、数据存储、Web界面等,可以大大加快开发进度和提高系统的稳定性。同时,Django还提供了便捷的API接口和模板引擎,方便系统与其他应用进行交互和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值