首先要在命令行建立Django項目:html
$ django-admin startproject my_blog
在my_blog/my_blog/setting.py
中修改下面幾個選項:python
添加等待要建立的應用:mysql
如今來建立博客應用
進入剛剛建立的my_blog
項目後執行:sql
$ python manage.py startapp blog
能夠看到已經建立了blog
應用數據庫
這個坑留着,先用自帶的sqlite。
連接:https://blog.csdn.net/mildddd...django
打開my_blog/blog/models.py
添加以下內容:瀏覽器
from django.db import models from django.contrib.auth.models import User # Create your models here. class BlogType(models.Model): type_name = models.CharField(max_length=50) def __str__(self): return self.type_name # 顯示標題類型 class Blog(models.Model): title = models.CharField(max_length=50) # 標題 blog_type = models.ForeignKey(BlogType,on_delete=models.DO_NOTHING) # 標題類型 author = models.ForeignKey(User,on_delete=models.DO_NOTHING) # 做者 content = models.TextField() # 文章內容 created_time = models.DateTimeField(auto_now_add=True) # 建立時間 last_updated_time = models.DateTimeField(auto_now_add=True) # 上一次更新時間 def __str__(self): return "<Blog: %s>" % self.title # 顯示標題
注意:想要應用同一文件的類,要把被引用的類放在應用這個類的類以前。例如這裏要把BlogType
類放在Blog
類以前。服務器
先進行數據庫遷移:session
$ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK ....
再來建立管理員:app
$ python manage.py createsuperuser :(輸入用戶名)root :(輸入郵箱)[[:blank:]] // 這裏不須要能夠直接空格 :(輸入密碼) zxc123456 // 太簡單的密碼不容許 :(重複密碼) zxc123456 Superuser created successfully.
而後建立數據庫:
$ python manage.py makemigrations Migrations for 'blog': blog\migrations\0001_initial.py - Create model Blog - Create model BlogType - Add field blog_type to blog
編輯my_blog/blog/admin.py
:
from django.contrib import admin from .models import Blog,BlogType # 引入模型 @admin.register(BlogType) class BlogTypeAdmin(admin.ModelAdmin): list_display = ('id','type_name') # 顯示的內容 @admin.register(Blog) class BlogAdmin(admin.ModelAdmin): list_display = ('title','blog_type','author','created_time','last_updated_time') # 顯示的內容
編寫my_blog/blog/views.py
:
from django.shortcuts import render_to_response, get_object_or_404 from .models import Blog # 引入models.py文件下的Blog模型 def blog_list(request): context = {} context['blog'] = Blog.objects.all() # 博客列表 return render_to_response('blog_list.html',context) def blog_detail(request,blog_pk): context = {} context['blog'] = get_object_or_404(Blog,pk=blog_pk) # 博客內容 return render_to_response('blog_detail.html',context)
而後在blog
目錄下建立一個templates
的文件夾,視圖都將存放在裏面。在裏面建立blog_detail.html
和blog_list.html
。blog_detail.html
:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{{ blog.title }}</title> </head> <body> <div> <a href="{% url 'home' %}"> <h3>My Blog</h3> </a> </div> <h3>{{ blog.title }}</h3> <p>{{ blog.content }}</p> </body> </html>
blog_list.html
:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>My Blog</title> </head> <body> {% for blog in blogs %} <a href="{% url 'blog_detail' blog.pk %}"> <h3>{{ blog.title }}</h3> </a> <p>{{ blog.content }}</p> {% endfor %} </body> </html>
在my_blog/blog/
目錄下建立urls.py
:
from django.urls import path from . import views urlpatterns = [ # http://localhost:8000/blog/# path('<int:blog_pk>',views.blog_detail,name="article_detail"), ]
再去my_blog/my_blog/urls.py
中設置:
而後能夠進管理界面查看效果了:
$ python manage.py runserver
瀏覽器輸入:
http://127.0.0.1:8000/admin
輸入剛剛的帳號和密碼