1. 程式人生 > >搜尋引擎二:Django網站首頁設計

搜尋引擎二:Django網站首頁設計

安裝Django

  • pip install django
  • 或者是: easy_install django

新建專案和應用

  • 找一個地方放專案檔案:這裡是E盤
  • 按住shift,再點選右鍵,開啟CMD
  • 輸入:django-admin startproject search_engine
  • 這樣就新建了個名為search_engine的專案資料夾
  • 輸入:manage.py startapp search
  • 這樣就新建了一個名為search的應用資料夾
  • search資料夾移到search_engine資料夾裡面,並刪除migrations資料夾
  • 現在的專案資料夾樹為:

註冊應用_指明模板和靜態資料夾路徑

  • 開啟setting.py,找到INSTALLED_APPS
  • 新增應用的名稱進去(注意有逗號):‘search_engine.search’,
  • 模板檔案路徑:TEMPLATE_DIRS = (“E:/search_engine/search_engine/search/templates”,)
  • 靜態檔案路徑:STATICFILES_DIRS = (
    os.path.join(BASE_DIR, “static”).replace(‘\’,’/’),
    )
# -*- coding:utf-8 -*-
# settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '(&%ja6j(vz!hph5!+25cfvrdnib^%28uu9l-igc*@x8r-j0vdi' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True TEMPLATE_DEBUG = True # 指明模板檔案路徑 TEMPLATE_DIRS = ("E:/search_engine/search_engine/search/templates",) ALLOWED_HOSTS = [] # 註冊應用 INSTALLED_APPS = ( 'django.contrib.admin'
, 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'search_engine.search', #自己註冊的應用,應用在search_engine資料夾下 #所以路徑為search_engine.search ) MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ) ROOT_URLCONF = 'search_engine.urls' WSGI_APPLICATION = 'search_engine.wsgi.application' # 設定資料庫 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } # 初始化資訊 LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True # 繫結靜態資料夾(即指明static資料夾路徑) # 以便找到對應的資源,如image,js,css STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static").replace('\\','/'), )

定義網站的URL對映

  • 開啟urls.py,定義url的對映
# -*- coding:utf-8 -*-
from django.conf.urls import patterns, include, url
from django.contrib import admin
from search import views

#定義不同url的對映
#即不同url呼叫views中不同的函式
urlpatterns = patterns('',
    #把主頁對映到viwes.py裡面的search_form函式
    #從瀏覽器訪問主頁的時候,會執行這句,然後呼叫search_form函式
    url(r'^$', 'views.search_form', name='home'),

    url(r'^admin/', include(admin.site.urls)),
)

定義views.py中對應的函式

  • 開啟search中的views.py,定義對應的對映函式
# -*- coding:utf-8 -*-
from django.shortcuts import render_to_response
from django.http import HttpResponse

#定義url對應的對映函式search_form
#接受一個request請求,返回一個html
def search_form(request):
    return render_to_response('search_form.html')

定義html模板search_form.html

  • 先在templates資料夾中新建一個基類模板base.html
  • 然後再新建一個search_form.html繼承並擴充套件
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    {% block content %}{% endblock %}{% block footer %}{% endblock %}
</body>
</html>

search_form.html:

{% extends "base.html" %}{% block title %}Search_form{% endblock %}{% block content %}
<div id="logo" style="text-align: center; margin-top: 15%">
    {% load staticfiles %}
    <img src="{% static "images/bg.png" %}" alt="bg image"/>
</div>

<form action="/search/" method="get">
    <div  style="width: 100%; text-align: center;margin-top: 10">
        <input type="text" name="q" maxlength="100" size="60">
        <input type="submit" value="Search">
    </div>
</form>
{% endblock %}{% block footer %}
<div style="text-align: center; margin-top: 50">
    <p>Thanks for visiting my site.</p>
</div>
{% endblock %}

放入靜態資源(圖片,js,css)

  • static資料夾中新建一個images資料夾
  • 裡面放入bg.png圖片檔案

執行自帶伺服器測試

  • 專案根目錄下執行:manage.py runserver
  • 在瀏覽器執行:127.0.0.1:8000

小結

  • 現在點選search會出現404,因為結果頁面還沒寫
  • 現在用的伺服器是自帶的,下一步換成nginx伺服器