假设网站项目名为qcblog
, 在相应位置新建qcblog
文件夹
在这个文件夹内:
django-admin startproject mysite .
新建站点文件夹.
新建home app python manage.py startapp home
基本设置
pycharm
的run>run configuration
:
在mysite/setting
中:
- 添加app列表
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'home',
]
- 修改时区
TIME_ZONE = 'Asia/Shanghai'
- 修改语言
LANGUAGE_CODE = 'zh-hans'
- 把默认的sqlite改为MySQL
DATABASES = {
'slave': {#slave
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
"default": {#default
"ENGINE": "django.db.backends.mysql",
"NAME": "qcblog",
"USER": "root",
"PASSWORD": "685337",
"HOST": "127.0.0.1",
"PORT": "3306",
},
}
- 修改模板文件配置
新建模板文件夹templates
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': False,
- 设置静态文件目录
STATIC_URL = '/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR,'static'),
)
python manage.py startapp blog
from django.db import models
from django.contrib.auth.models import User
class BlogArticle(models.Model):
title=models.CharField(max_length=300)
author=models.ForeignKey(User,related_name='blog_posts',on_delete=models.CASCADE)
body=models.TextField(blank=True,default='')
isOriginal=models.BooleanField(default=True)
publish=models.DateTimeField(auto_now_add=True)
classification=models.CharField(max_length=100,default='未分类')
editModel=models.CharField(max_length=50,default='HTML')
class Meta:
ordering=('-publish',)
def __str__(self):
return self.title
python manage.py makemigrations blog
python manage.py migrate
新建超级用户
python manage.py createsuperuser
为文章添加后台视图
在blog/admin
中,
from django.contrib import admin
from .models import BlogArticle
class BlogArticleAdmin(admin.ModelAdmin):
list_display = ('title','author','publish')
list_filter = ('author','publish')
search_fields = ('title','body')
raw_id_fields = ('author',)
date_hierarchy = 'publish'
ordering = ['-publish','author']
admin.site.register(BlogArticle,BlogArticleAdmin)
设置路由mysite\urls
:
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls', namespace='blog')), #主页
]
在blog中新建urls.py
设置blog的两个基本路由, 一个用来显示所有的文章, 一个用来根据文章id浏览文章
注意加上app_name
,否则报错
app_name = "blog"
urlpatterns = [
path("", views.blog_title, name='blog_title'),
path('<int:article_id>/', views.blog_article, name='blog_article'),
]