1. 程式人生 > >Django框架寫電影查詢網站

Django框架寫電影查詢網站

前面介紹了Django的一些基本知識,下面我們運用這些知識寫一個電影查詢的網站。

建立專案

1.新建資料夾。電影

2.在電影目錄下,開啟終端,django-admin startproject myPro,新建工程專案。

3.cd到myPro檔案目錄下,新建app,django-admin startapp myApp

在工程專案myPro新建一個templates資料夾,並在此資料夾中新建index.html檔案

4.在工程專案myPro新建一個mystatic資料夾,將bootstraps的三個資料夾貼上進來。

5.settings檔案的設定。

首先註冊app。

設定templates路徑:

設定mystatic資料夾路徑。

STATICFILES_DIRS =(
    os.path.join(BASE_DIR,'myStatic'),
)

以上三個設定都在settings.py檔案中。

工程專案所需準備的資料夾建立已經全部結束,如下圖所示:

操作

做網站,首先要準備的就是介面,這裡附上我所使用的介面。

一個本地的url:

https://api.map.baidu.com/location/ip?ak=KHkVjtmfrM6NuzqxEALj0p8i1cUQot6Z

一個查詢的url:

http://api.map.baidu.com/telematics/v3/movie?qt=hot_movie&location=鄭州&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&output=json

首先先建立檢視,urls.py還有index.html的連線。

檢視views.py檔案中的程式碼如下:

from django.shortcuts import render

# Create your views here.

def myMovie(request):
    return render(request,'index.html')

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),
]

因為只是測試連線,所以index.html檔案中沒有必要再寫程式碼。

來到工程專案檔案目錄下,python manage.py runserver啟動伺服器

顯示結果:

未報錯,就說明已經連線好了。下面我們要處理的就是把介面url中獲取的資料,傳送到index.html介面上。

來到views.py檔案中。

獲取本地的城市程式碼如下:

from django.shortcuts import render
import requests
from django.http import HttpResponse
# Create your views here.

def myMovie(request):
    # 獲取城市資訊,使用城市拼接url,請求電影資訊
    # 首次進入,直接請求地址資訊
    url = 'https://api.map.baidu.com/location/ip?ak=KHkVjtmfrM6NuzqxEALj0p8i1cUQot6Z'
    response = requests.get(url)
    # 將從請求中獲得的資訊轉換成json格式,便於解析
    response_dic = response.json()
    city = response_dic['content']['address_detail']['city']
    return HttpResponse(city)

重新整理瀏覽器的介面,顯示結果如下:

拼接所有城市的url,獲取電影資訊。程式碼如下:

# 拼接url,獲取全部電影資訊
movieUrl = 'http://api.map.baidu.com/telematics/v3/movie?qt=hot_movie&location={}&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&output=json'.format(city)
# 請求電影資訊
movieData = requests.get(movieUrl).json()
# 判斷電影資訊是否請求成功
if movieData['error'] == 0:
    all_movies = movieData['result']['movie']
    # 將資料通過urls.py傳送給介面
    context = {
        'city':city,
        'allMovies':all_movies,
    }
else:
    context = {
        'city': city,
        'error':'無法獲取當前城市的電影資訊',
    }
# 返回資料
return render(request,'index.html',context)

此時我們已經將資料返回到介面,介面的設計就看個人喜好了。

來到index.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>
        <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 allMovies %}
        <section class="col-lg-6 col-md-6 col-m-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_tags}}</div>
            </div>
        </section>
    {% endfor %}
</div>
<script src="{% static 'js/jquery.js' %}"></script>
<script src="{% static 'js/bootstrap.js' %}"></script>
</body>
</html>

工作到現在,我們已經完成了大多數的工作,現在就只剩下form表單提交別的城市的時候,我們也可以獲取相應城市的電影資訊,因為form表單在我們程式第一次進來的時候,預設是get請求,所以我們可以利用這一地,第二次進行提交的時候把獲取城市資訊的程式碼,用這個特點進行一次判斷。

在介面查詢框對應的form表單程式碼修改如下。

<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>

來到views.py檔案中,將獲取城市的程式碼加上請求方式的判斷即可,程式碼如下:

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標籤裡面輸入的內容
    city = request.POST.get('city')
    # city = request.POST['city']

這樣就完成了所有的功能,最後介面顯示如下:

相關推薦

Django框架電影查詢網站

前面介紹了Django的一些基本知識,下面我們運用這些知識寫一個電影查詢的網站。 建立專案 1.新建資料夾。電影 2.在電影目錄下,開啟終端,django-admin startproject myPro,新建工程專案。 3.cd到myPro檔案目錄下,新建app,d

python3開發進階-Django框架中的ORM的常用操作的補充(F查詢和Q查詢,事務)

這樣的 env atomic 實例 In git 必須 TE setup 閱讀目錄 F查詢和Q查詢 事務 一、F查詢和Q查詢 1、F查詢 查詢前的準備 class Product(models.Model): name = mod

Django框架詳細介紹---ORM相關操作---select_related和prefetch_related函數對 QuerySet 查詢的優化

ger AS AI 出版社 獲得 har 有效 object 庫存 Django的 select_related 和 prefetch_related 函數對 QuerySet 查詢的優化 引言   在數據庫存在外鍵的其情況下,使用select_related()和pref

Django框架查詢 Extra

django 所有 div line filter 對象 values 情況下 pla extra 1 2 extra(select=None, where=None, params=None, tables=None, order_by=N

django框架開發一個B2C購物網站的基本流程和用到的知識點總結1

value 後端開發 .site elf pan 直接 基本 inter mobile 開發流程 開發模式采用前後端分離模式,作為後端開發人員我們只關註後端業務邏輯開發: 省略項目框架搭建文件的配置部分。。。。 一:用戶部分 在項目開發中我們要用到用戶模型類User,Dj

Django框架——查詢集QuerySet

目錄 1.概念 2.兩大特性 (1)惰性執行: (2)快取: 3.限制查詢集 1.概念 Django的ORM中存在查詢集的概念。 查詢集,也稱查詢結果集、QuerySe

三十九、python學習之Django框架(二):請求、URL路徑引數、查詢字串、請求體(表單,非表單)、請求頭

一、請求 1.flask中,利用HTTP協議想伺服器傳參的幾種途徑 1.1 提取URL的特定部分,可以在伺服器端的路由中用正則表示式擷取: 如:/weather/2018 //前端傳送請求: $.ajax({ url:'http://www.baidu.com/

潭州課堂25班:Ph201805201 django框架 第六課 模型類增刪改查,常用 的查詢查詢條件 (課堂筆記)

在檢視函式中寫入增刪改查的方法 增:     在 urls 中配置路徑 :    查: 1: 在後臺列印資料  在模型類中新增格式化輸出 : QuerySet,反回的是個物件,可以按索引聚會,用 for

Django框架開發一個簡單的企業網站(四)

現在通過後臺可以新建文章分類,並且編輯儲存文章了;由於Django預設的大容量文字欄位是通過一個textarea作為輸入方式,所以我們還需要引入一個富文字編輯器,這裡我推薦KindEditor(http://kindeditor.net/demo.php),配置簡單,功能也齊全。 將下載好的

Django框架開發一個簡單的企業網站(二)

現在已經搭建好了網站的基本框架,繼續完善後臺功能,既然要寫後臺,自然要準備好資料庫。 資料庫我選擇熟悉的mysql,用的navicat視覺化管理工具,這裡我建立了一個my_web的資料庫;建立好資料庫後在專案目錄下的settings.py檔案內配置資料庫連線資訊: DATABASE

Django框架開發一個簡單的企業網站(一)

Python有許多不同的 Web 框架,Django是重量級選手中最有代表性的一位,許多成功的網站和APP都基於Django。 既然如此,那麼…… 老規矩,先安裝Django框架,我的Django版本: 安裝完成後在想儲存專案的目錄下執行命令,新建一個專案: djan

Django框架開發一個簡單的企業網站(三)

接著之前的專案繼續深入開發,後臺和資料庫已經搞定,現在可以寫我們網站的功能了;就寫一個最簡單的功能,釋出企業新聞。開啟app內的models.py檔案,寫兩個資料模型類: from django.db import models class NewsClass(models.Model)

Python-Django框架的select_related 和 prefetch_related函式對 QuerySet 查詢的優化

概念: select_related()當執行它的查詢時它沿著外來鍵關係查詢關聯的物件資料。它會生成一個複雜的查詢並引起效能的消耗,但是在以後使用外來鍵關係時將不需要資料庫查詢。 prefetch_related()返回的也是QuerySet,它將在單個批處理中自動檢索每個

Python的Django框架-資料庫查詢(增刪改查)

建立專案 django-admin startproject django_model 建立應用 python manage.py startapp model 配置應用 model, 編輯 django_model/settings.py

[原始碼和文件分享]基於Python的Django框架實現的中式快餐廳管理資訊系統網站

1 初步調研 隨著餐飲業的連鎖和國外餐飲巨頭的進入,餐飲業的競爭將越來越激烈:要想在競爭中處於不敗之地,必須在管理、服務等方面提高服務管理意識。面對當前餐飲業普遍的產業化程度低,管理手段、管理技術落後等問題,使用計算機管理在很大程度上可以幫助餐飲企業克服這些困難。計算機管理系統可以提高餐飲企業的

四十三、python學習之Django框架(三):資料庫,資料庫配置,定義模型,shell工具,資料庫操作,查詢

一、資料庫: 1. ORM框架: object relation mapping: 物件關係對映,在ORM框架中,它幫我們把類和資料表進行了一個對映,可以讓我們通過類和類物件就能夠操作它所對應的表格中的資料.ORM框架還有一個功能,它可以根據我們設計的類自動幫

python開發電影查詢系統(二)—Django展示

上篇部落格講了python爬取電影資訊的後臺資料處理,現在我們將Django前端顯示。 如果對Django還不熟的朋友可以先找資料熟悉一下。 這裡我們直接講。 1.安裝好Django後,找到你的工作目錄,建立好一個專案find_film: dja

Django框架(模型層:單表查詢)

建立表 1.建立模型 建立名為book的app,在book下的models.py中建立模型 from django.db import models # Create your models here. class Book(models.Model): id = models.Au

電商網站Django框架)—— 大綱內容與基本功能分析

1.  專案架構 2.  資料庫表結構 3.  資料庫讀寫分離   4.  Django讀寫分離配置 新建utils/db_router.py   課後閱讀資料 5.  使用者認證模型 注意: AUTH_USER_MODEL配置引數要在第一次遷移資

Django框架電商網站開發流程

一、配置 1 建立專案和應用 配置專案setting.py(應用,templates路徑,資料庫,STATICFILES_DIRS)配置專案urls.py,namespace起名最好和應用名一樣,不容易混淆 2 配置應用 在每個應用中建立urls.py同時對應該應用