python Django的web開發(fā)實例(入門)
一、創(chuàng)建一個項目
如果這是你第一次使用Django,那么你必須進(jìn)行一些初始設(shè)置。也就是通過自動生成代碼來建立一個Django項目--一個Django項目的設(shè)置集,包含了數(shù)據(jù)庫配置、Django詳細(xì)選項設(shè)置和應(yīng)用 特性配置,具體操作步驟如下所示。
1.新建Django項目
選擇sqlite數(shù)據(jù)庫
2.創(chuàng)建網(wǎng)站模塊app
3.測試新建的模塊是否正常
Validating models... 0 errors found March 12, 2014 - 10:26:53 Django version 1.6.2, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
服務(wù)器啟動起來后,去瀏覽器輸入網(wǎng)址:http://127.0.0.1:8000,你會看到一個令人愉悅的,柔和的淡藍(lán)色 “Welcome to Django” 頁面。表示它已正常工作!
讓我們來看看mysite都創(chuàng)建了些什么:
這些文件分別是:
a、外層mysite目錄只是你項目的一個容器。對于Django來說該目錄名并不重要;你可以重命名為你喜歡的。
b、manage.py: 一個實用的命令行工具,可讓你以各種方式與該Django項目進(jìn)行交互。
c、內(nèi)層mysite目錄是你項目中的實際Python包。該目錄名就是Python包名,通過它你可以導(dǎo)入它里面的任何東西。(e.g.import mysite.settings).
d、mysite/__init__.py:一個空文件,告訴Python該目錄是一個Python包。
e、mysite/settings.py:該Django項目的設(shè)置/配置。
f、mysite/urls.py:該Django項目的URL聲明;一份由Django驅(qū)動的網(wǎng)站“目錄”。
g、mysite/wsgi.py:一個WSGI兼容的Web服務(wù)器的入口,以便運行你的項目。
更改端口號
默認(rèn)情況下,:djadmin:runserver 命令啟動的開發(fā)服務(wù)器只監(jiān)聽本地IP的8000端口。
如果你想改變服務(wù)器的端口,把它作為一個命令行參數(shù)傳遞即可。例如以下命令啟動的服務(wù)器將監(jiān)聽8080端口:
C:\Users\D-117>cd F:\workspace\mysite\src\mysite\ #manage.py文件所在目錄,即mysite項目下 C:\Users\D-117>f: F:\workspace\mysite\src\mysite>python manage.py runserver 8080 Validating models... 0 errors found March 12, 2014 - 10:31:27 Django version 1.6.2, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8080/ Quit the server with CTRL-BREAK.
如果你想改變服務(wù)器IP,把它和端口號一起傳遞即可。因此,要監(jiān)聽所有公共IP地址(如果你想在其他電腦上炫耀你的工作),請使用:
python manage.py runserver 0.0.0.0:8000
數(shù)據(jù)庫設(shè)置
現(xiàn)在,編輯 mysite/settings.py 。 這是一個普通的Python模塊,包含了代表Django設(shè)置的模塊級變量。 更改DATABASES中'default'下的以下鍵的值,以匹配您的數(shù)據(jù)庫連接設(shè)置。
a、ENGINE – 從 'django.db.backends.postgresql_psycopg2', 'django.db.backends.mysql', 'django.db.backends.sqlite3', 'django.db.backends.oracle' 中選一個
b、NAME – 你的數(shù)據(jù)庫名。如果你使用 SQLite,該數(shù)據(jù)庫將是你計算機上的一個文件;在這種情況下,:setting:NAME 將是一個完整的絕對路徑,而且還包含該文件的名稱。如果該文件不
存在,它會在第一次同步數(shù)據(jù)庫時自動創(chuàng)建(見下文)。當(dāng)指定路徑時,總是使用正斜杠,即使是在Windows下(例如:`C:/homes/user/mysite/sqlite3.db`) 。
c、USER – 你的數(shù)據(jù)庫用戶名 ( SQLite 下不需要) 。
d、PASSWORD – 你的數(shù)據(jù)庫密碼 ( SQLite 下不需要) 。
e、HOST – 你的數(shù)據(jù)庫主機地址。如果和你的數(shù)據(jù)庫服務(wù)器是同一臺物理機器,請將此處保留為空 (或者設(shè)置為 127.0.0.1) ( SQLite 下不需要) 。
如果你是新建數(shù)據(jù)庫,我們建議只使用 SQLite ,將 ENGINE 改為 'django.db.backends.sqlite3' 并且將 NAME 設(shè)置為你想存放數(shù)據(jù)庫的地方。 SQLite 是內(nèi)置在 Python 中的,因此你不需要安裝任何東西來支持你的數(shù)據(jù)庫。
注意:
如果你使用PostgreSQL或者M(jìn)ySQL,確保你已經(jīng)創(chuàng)建了一個數(shù)據(jù)庫。還是通過你的數(shù)據(jù)庫交互接口中的“CREATE DATABASE database_name;”命令做到這一點的。
如果你使用SQLite,你不需要事先創(chuàng)建任何東西 - 在需要的時候,將會自動創(chuàng)建數(shù)據(jù)庫文件。
當(dāng)你編輯 settings.py 時,將 TIME_ZONE 修改為你所在的時區(qū)。默認(rèn)值是美國中央時區(qū)(芝加哥)。同時,注意文件底部的 INSTALLED_APPS 設(shè)置。它保存了當(dāng)前 Django 實例已激活的所
有 Django 應(yīng)用。每個應(yīng)用可以被多個項目使用,而且你可以打包和分發(fā)給其他人在他們的項目中使用。
默認(rèn)情況下,:setting:INSTALLED_APPS 包含以下應(yīng)用,這些都是由 Django 提供的:
- django.contrib.auth – 身份驗證系統(tǒng)。
- django.contrib.contenttypes – 內(nèi)容類型框架。
- django.contrib.sessions – session 框架。
- django.contrib.sites – 網(wǎng)站管理框架。
- django.contrib.messages – 消息框架。
- django.contrib.staticfiles – 靜態(tài)文件管理框架。
這些應(yīng)用在一般情況下是默認(rèn)包含的。
所有這些應(yīng)用中每個應(yīng)用至少使用一個數(shù)據(jù)庫表,所以在使用它們之前我們需要創(chuàng)建數(shù)據(jù)庫中的表。要做到這一點,請運行以下命令:python manage.py syncdb,具體操作下面會闡述。
至此,項目開發(fā)環(huán)境建立好了,我們可以開工了。
二、創(chuàng)建模型
4.編輯代碼
4.1修改blog.models.py
from django.db import models from django.contrib import admin # Create your models here. class BlogPost(models.Model): title = models.CharField(max_length = 150) content = models.TextField() timestamp = models.DateTimeField() class BlogPostAdmin(admin.ModelAdmin): list_display = ('title', 'content', 'timestamp') admin.site.register(BlogPost, BlogPostAdmin)
我們將創(chuàng)建一個BlogPost模型,包含title、content、timestamp三個字段。每個模型都繼承自django.db.models.Model子類的類來描述。 每個模型都有一些類變量,每一個類變量都代表了一個數(shù)據(jù)庫字段。
每個字段由一個 Field 的實例來表現(xiàn) – 比如 CharField 表示字符類型的字段和 DateTimeField 表示日期時間型的字段。這會告訴 Django 每個字段都保存了什么類型的數(shù)據(jù)。
每一個 Field 實例的名字就是字段的名字(如: title、content、timestamp),其格式屬于親和機器式的。在你的 Python 的代碼中會使用這個值,而你的數(shù)據(jù)庫會將這個值作為表的列名。
4.2修改blog.views.py
# Create your views here. from django.template import loader,Context from django.http import HttpResponse from blog.models import BlogPost def archive(request): posts = BlogPost.objects.all() t = loader.get_template('archive.html') c = Context({'posts': posts}) return HttpResponse(t.render(c))
4.3修改mysite.setting.py,找到下面部分進(jìn)行修改
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', )
4.4修改mysite.urls.py
from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() from blog.views import archive urlpatterns = patterns('', # Examples: # url(r'^$', 'mysite.views.home', name='home'), # url(r'^blog/', include('blog.urls')), url(r'^admin/', include(admin.site.urls)), url(r'^blog/', archive), )
5.建立樣式網(wǎng)頁模板
請在包blog下添加templates文件夾,并在templates下建立兩個網(wǎng)頁文件:archive.html和base.html
5.1編輯archive.html
{% extends "base.html" %} {% block content %} {% for post in posts %} <h1>{{ post.title}}</h1> <p>{{ post.content }}</p> <p>{{ post.timestamp|date:"1, F jS"}}</p> {% endfor %} {% endblock %}
5.2編輯base.html
<html> <style type="text/css"> body { color: #edf; background: #453; padding: 0 5em; margin:0 } h1 { padding: 2em lem; background:#675 } h2 { color: #bf8; border-top: 1px dotted #fff; margin-top: 2em } p { margin: lem 0 } </style> <body> <h1><center>Alexia's Blog</center></h1> {% block content %} {% endblock %} </body> </html>
三、同步數(shù)據(jù)庫
設(shè)置你的賬號和密碼,為登陸blog的管理后臺作準(zhǔn)備。
Creating tables ... Creating table django_admin_log Creating table auth_permission Creating table auth_group_permissions Creating table auth_group Creating table auth_user_groups Creating table auth_user_user_permissions Creating table auth_user Creating table django_content_type Creating table django_session You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes Username (leave blank to use 'd-117'): root Email address: root@qq.com Password: root Password (again): root Superuser created successfully. Installing custom SQL ... Installing indexes ... Installed 0 object(s) from 0 fixture(s) Finished "F:\workspace\mysite\src\mysite\manage.py syncdb" execution.
四.運行測試
登陸界面,登陸賬號和密碼是初始化數(shù)據(jù)庫的時候設(shè)定的。
登錄成功后跳轉(zhuǎn)到下面頁面:
在該頁面可以添加blog文章:
發(fā)布成功后,輸入網(wǎng)址:http://127.0.0.1:8000/blog/進(jìn)行查看,測試成功!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Opencv中的cv2.calcHist()函數(shù)的作用及返回值說明
這篇文章主要介紹了Opencv中的cv2.calcHist()函數(shù)的作用及返回值說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11Python word文本自動化操作實現(xiàn)方法解析
這篇文章主要介紹了Python word文本自動化操作實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11