django 输入城市名称获取相应城市即将上映电影

本文介绍了一个基于Django框架的电影信息查询应用,通过调用百度地图API获取用户所在城市,并请求该城市的热门电影信息。应用包括视图处理、URL配置及HTML页面展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在views.py中

from django.shortcuts import render
import requests
# Create your views here.
from django.http import HttpResponse
def myMovie(request):
    # return render(request,'index.html')

    # 获取城市信息
    # 使用城市拼接url 请求电影信息

    # 首次进入这个方法 直接请求地址信息
    if request.method =='GET':
        url = 'https://api.map.baidu.com/location/ip?ak=KHkVjtmfrM6NuzqxEALj0p8i1cUQot6Z'
        response = requests.get(url)
        response_dic = response.json()
        city = response_dic['content']['address_detail']['city']
    else:
        # 如果发现请求方式是post方式 就可以认为是form表单发送的请求
        # 那么直接获取form表单里面name值 为city的input标签 里面输入的内容
        city = request.POST['city']

    # 拼接url 获取全部电影信息
    movie_url = 'http://api.map.baidu.com/telematics/v3/movie?qt=hot_movie&location={}&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&output=json'.format(city)
    movie_data = requests.get(movie_url).json()

    # 判断电影信息是否请求成功
    if movie_data['error'] == 0:
        all_movies = movie_data['result']['movie']
        context = {
            'city':city,
            'all_movies':all_movies,
        }
        # return render(request,'index.html',context)
    else:
        context = {
            'city':city,
            'error':'无法获取当前城市电影信息'
        }
    return render(request,'index.html',context)

2.在urls.py中设置路径

from django.contrib import admin
from django.urls import path
from myApp import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('movie/',views.myMovie)
]

3.在html文件中

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="{% static 'css/bootstrap.css'%}">
    <title>{{city}}即将上映电影</title>
    <style>
        section{
            /*border:1px solid red;*/
            height:240px;
            position: relative;
        }
        img{
            height:150px;

        }
        .right{
            display: inline-block;
            /*border:1px solid blue;*/
            position: absolute;
            left:200px;
            top:40px;
        }
    </style>
</head>
<body>
    <nav class="navbar navbar-inverse" role="navigation">
    <div class="container">
    <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse"
                data-target="#example-navbar-collapse">
            <span class="sr-only">切换导航</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="#">电影首页</a>
    </div>
    <div class="collapse navbar-collapse" id="example-navbar-collapse">
        <ul class="nav navbar-nav">
            <li class="active"><a href="#">加入我们</a></li>
            <li><a href="#">关于我们</a></li>
            <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                    联系我们
                </a>
            </li>
        </ul>
        <!--跳转到urls.py里面的 /movie 路径-->
        <!--/movie 跳转到 views.py 里面的myMovie 方法里面-->
        <form action="/movie/" method="POST" class="navbar-form navbar-left" role="search">
        {% csrf_token%}
        <div class="form-group">
            <input name="city" type="text" class="form-control" placeholder="请输入城市进行搜索">
        </div>
        <button type="submit" class="btn btn-default">提交</button>
    </form>
    </div>
    </div>

</nav>

    <div class="container">

        {% if error %}
            <h1>{{error}}</h1>
        {% endif%}

        {% for movie in all_movies %}
            <section class="col-lg-6 col-md-6 col-sm-12">
                <h4>{{movie.movie_name}}</h4>
                <img src="{{movie.movie_picture}}" alt="">
                <div class="right">
                    <div>类型:{{movie.movie_type}}</div>
                    <div>上映日期:{{movie.movie_release_date}}</div>
                    <div>演员:{{movie.movie_starring}}</div>
                    <div>评分:{{movie.movie_score}}</div>
                    <div>导演:{{movie.movie_director}}</div>
                    <div>类型:{{movie.movie_tags}}</div>
                </div>
            </section>
        {% endfor%}
    </div>
    <script src="{% static 'js/jquery.js'%}"></script>
    <script src="{% static 'js/bootstrap.js'%}"></script>
</body>
</html>

注意:由于用到bootstrap中的模型,所有需要先引入bootstrap静态文件

在html文件最上方将静态文件 进行加载

{% csrf_token %} 防止跨域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值