使用Django基礎模板搭建自己的知識庫
今天給自己定了個小目標,一定要先做出點東西來,要不別回家了,哈哈。
當然我可不是瞎說,做事得有計劃和目標。
我分為了兩個階段,計劃在一天內完成,上午是階段一,下午是階段二。第一階段全部要完成,第二階段滿足60分算是達標。任務和細節如下:
首先,上來就是一個大工程,難免也吃不消,而且很難見到效果,有什麼好的小專案呢,我轉眼一想,先拯救下自己吧。
我每天要看不少的文章,有些是碰到問題之後再去看,有些是針對性的去檢視,看到好的文章就收藏了,結果發現收藏的越多,越是難以利用起來,因為太多了,管理起來也不方便,大家知道瀏覽器的收藏夾,其實簡單用還行,做管理還是很不方便的,至少沒有搜尋功能。如果想搜尋哪些時間段搜尋了哪些網頁,把連結都保留下來,這樣我就可以放心的關掉瀏覽器了,殊不知,這些天我的瀏覽器開啟了快40個頁面,還捨不得關掉。所以先解決我的問題,做一個本地的知識庫,隨時可以用。
所以第一階段我就在windows上來做,也沒打算用MySQL,自帶的sqlite足夠了。而且我本機要用的話,隨時啟動python即可。為了快速迭代實現功能,我準備使用自帶的admin模板來做,剛好滿足需求,而且頁面還看起來簡潔美觀。
這是初步做成的效果圖,會在這個基礎上逐步完善。
第一階段的工作很快開始了,配置環境,簡單捋一捋。
先得到django的版本
python -c "import django; print(django.get_version())"
然後建立專案kmp(knowledge management portal)和應用kmpapp
django-admin startproject kmp
cd kmp
django-admin startapp kmpapp
開啟web服務迅速驗證
python manage.py runserver [IP:PORT]
如果能看到一個歡迎介面,證明就達標了。
然後修改settings.py檔案,新增應用
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'kmpapp',
)
修改支援語言為中文
LANGUAGE_CODE = 'zh-Hans'
註釋掉下面的一行。
'django.middleware.csrf.CsrfViewMiddleware',
然後修改kmpapp/urls.py,新增下面的內容
url(r'^kmpapp/index/$','kmpapp.views.index')
修改kmpapp/views.py,新增如下的內容:
from django.http import HttpResponse
def index(req):
return HttpResponse('Hello World')
然後再次驗證 python manage.py runserver [IP:PORT]
如果能看到hello world,繼續往下走。
我們配置models.py檔案,主要的思想就是建立3個類,一個是一級目錄(parent_category),一個二級目錄(child_category),一個url表(url_info)
其中二級目錄表和url表是有外來鍵的。
models.py的檔案內容如下:
from django.db import models
# Create your models here.
class km_parent_category(models.Model):
category_pid = models.AutoField( primary_key= True)
category_name = models.CharField( max_length= 200)
category_memo = models.CharField( max_length= 200)
class Meta:
db_table = 'km_parent_category'
verbose_name = 'CATEGORY_PARENT'
verbose_name_plural = 'CATEGORY_PARENT'
ordering = [ 'category_pid']
def __unicode__( self):
return '%s %s' % ( self.category_pid , self.category_name)
class km_child_category(models.Model):
category_cid = models.AutoField( primary_key= True)
category_name = models.CharField( max_length= 200)
category_memo = models.CharField( max_length= 200)
#category_parent_pid = models.ForeignKey( 'km_parent_category', related_name='category_parent_pid', to_field='category_pid', verbose_name='Url_category')
category_parent_pid = models.ForeignKey( 'km_parent_category')
class Meta:
db_table = 'km_child_category'
verbose_name = 'CATEGORY_CHILD'
verbose_name_plural = 'CATEGORY_CHILD'
ordering = [ 'category_cid']
def __unicode__( self):
return '%s %s' % ( self.category_cid , self.category_name)
class km_url_info(models.Model):
url_id = models.AutoField( primary_key= True)
url_title = models.CharField( max_length= 100)
url_detail = models.CharField( max_length= 200)
create_date = models.DateTimeField( 'date created')
url_memo = models.CharField( max_length= 200)
URL_STATUS = (
( 1, 'VALID') ,
( 0, 'INVALID')
)
url_status = models.IntegerField( choices=URL_STATUS)
category_id = models.ForeignKey( 'km_child_category', related_name= 'category_id', to_field= 'category_cid', verbose_name= 'Url_category')
#category_id = models.ForeignKey('km_child_category')
class Meta:
db_table = 'km_url_info'
verbose_name = 'URL_INFO'
verbose_name_plural = 'URL_INFO'
ordering = [ 'url_id']
def __unicode__( self):
return '%s %s' % ( self.url_id , self.url_title)
views.py的檔案內容如下:
from django.shortcuts import render
from kmpapp.models import km_url_info
# Create your views here.
from django.http import HttpResponse
from kmpapp.models import km_parent_category
from kmpapp.models import km_child_category
from kmpapp.models import km_url_info
from django.shortcuts import render_to_response
def index( req):
return HttpResponse( 'Hello World')
def add_url( req,name):
km_parent_category.objects.create( category_name=name)
return HttpResponse( 'OK')
def getList(request):
category = km_parent_category.objects.all()
url_info = km_url_info.objects.all()
child_info = km_child_category.objects.all()
result = render_to_response(
'test.html', { 'km_category': category , 'km_url_info': url_info , 'km_child_info': child_info})
return result
admin.py的檔案內容如下:
from django.contrib import admin
# Register your models here.
from kmpapp.models import km_parent_category
from kmpapp.models import km_child_category
from kmpapp.models import km_url_info
class category_parent_admin(admin.ModelAdmin):
fields = [ 'category_name', 'category_memo']
list_display = ( 'category_name',
'category_memo')
admin.site.register(km_parent_category , category_parent_admin)
class category_child_admin(admin.ModelAdmin):
fields = [ 'category_parent_pid',
'category_name', 'category_memo']
list_display = ( 'category_parent_pid', 'category_name',
'category_memo')
admin.site.register(km_child_category , category_child_admin)
class url_admin(admin.ModelAdmin):
fields = [ 'category_id', 'url_title', 'url_detail', 'create_date', 'url_memo', 'url_status']
list_display = ( 'category_id', 'url_title', 'url_detail', 'create_date', 'url_memo', 'url_status')
admin.site.register(km_url_info , url_admin)
使用如下的方式生成資料表。
python manage.py makemigrations kmpapp
python manage.py sqlmigrate kmpapp 0001
python manage.py migrate
建立管理使用者
python manage.py createsuperuser
再次驗證即可。
python manage.py runserver [IP:PORT]
可以很方便的修改url的資訊,至少對我來說,我可以很快完成這些力所能及的工作。
第一階段的工作比預期晚了一個小時,第二階段的工作是在測試的虛擬機器上做的,碰到了一個奇怪的問題,怎麼除錯都不對,一直除錯到晚上8:30,回到家都快10點,吃了點東西繼續調,我感覺是Django的一個bug,自動轉換的form表單總是有點問題,直到11:30的時候才算搞好。
總算和完成了這些基礎的工作,第二階段的任務可以勉強打60分。剩下的事情就有搞頭了。來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2148803/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 搭建自己的 vue 元件庫(一) —— vue 外掛開發基礎知識Vue元件
- PhpCms模板標籤的基礎知識PHP
- 【Python基礎知識】Django框架簡介PythonDjango框架
- Django基礎之六(模型理論知識)Django模型
- 手把手教你搭建自己的Raneto知識庫(二)
- 協程庫基礎知識
- 資料庫基礎知識資料庫
- django-模板層基礎2Django
- Python基礎知識之Django框架優缺點!PythonDjango框架
- 如何搭建自己的知識體系?
- GEO資料庫基礎知識資料庫
- 資料庫基礎重要知識資料庫
- 基礎知識梳理~資料庫資料庫
- 爬知識星球,製作自己的知識倉庫
- 「整理」前端微知識庫 —— 基礎技能前端
- 資料庫基礎知識介紹!資料庫
- MySQL?資料庫的基礎知識撩磅MySql資料庫
- Python基礎函式使用知識Python函式
- 基礎知識
- Django基礎教程之工程搭建Django
- LUA的基礎知識
- Django基礎三之路由、檢視、模板Django路由
- 使用github搭建自己的maven庫GithubMaven
- 資料庫安裝以及基礎知識資料庫
- 小白系列:資料庫基礎知識解析資料庫
- 使用AngularJS學習MVC的基礎知識分享AngularJSMVC
- 學習資料庫的基礎知識的書籍資料庫
- Envoy基礎知識
- DockerFile基礎知識Docker
- Webpack 基礎知識Web
- js基礎知識JS
- React基礎知識React
- 程式基礎知識
- Docker基礎知識Docker
- qml基礎知識
- Mybatis基礎知識MyBatis
- python基礎知識Python
- Hadoop基礎知識Hadoop
- webpack基礎知識Web