1. 安装python和django并配置环境变量;
2. 将 django-admin.py 文件复制到目录A(A表示你想在该目录下创建项目);
3. 输入【 python django-admin.py startproject project_name 】创建项目;
4. 输入【 python .\manage.py runserver 127.0.0.1:8000 】运行本地IP,跑起项目,此时即可选择浏览器,输入网址 “http://127.0.0.1:8000/” 打开网页;
5. 输入【 python .\manage.py startapp appName 】创建app项目,并进行如下配置:
1)手动添加urls.py;
2)配置【setting.py】,包括appName、templates、static等(后续的数据库类型也是在这里配置);
3)理解每个appName下的urls.py和projectName目录下的urls.py的关系,比进行配置;
4)编写appName目录下的【views.py】,返回变量和具体网页;
6. 输入【 python .\manage.py sycndb 】创建数据库
-------------------------------------------------------------------------------------------------------------------------------
1.pycharm,python,django下载安装好后,新建一个项目:mysite (左侧栏中的django)
文件说明如下:
a.setting.py文件中设置下,将语言改为中文,时区改为上海(没有北京时区):
- LANGUAGE_CODE = 'zh-hans'
- TIME_ZONE = 'Asia/Shanghai'
2.安装mysql,navicat并连接创建好数据库myblog
a.修改django中数据库配置,在setting.py中,如下:
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql',
- 'NAME': 'myblog', #数据库名
- 'USER':'root', #用户名
- 'PASSWORD':'******', #密码
- 'HOST':'127.0.0.1', #本机地址
- 'PORT':'3306', #端口
-
- }
- }
b.将django与mysql关联上了,但Python并没有与mysql连接上,必须在pycharm的Terminal中安装mysqlclient:
pip install mysqlclient
注:测试完整代码:https://github.com/geerniya/django_blog
3.创建APP:python manage.py startapp myblog
a.到setting.py中的INSTALLED_APPS中,如下:
- INSTALLED_APPS = [
- 'django.contrib.admin',
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'myblog', #新建立的app
- ]
- import pymysql
- pymysql.install_as_MySQLdb()
将settings里面的DATABASES改成MySQL相关
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql',
- 'OPTIONS':{'read_default_file': os.path.join(BASE_DIR, 'my.cnf'),}
- }
- }
在settings的上一级目录中添加 my.cnf 文件,内容如下:
- [client]
- database = 'myblog'
- user = 'root'
- password = '123456'
- default-character-set = utf8
进入mysql,查看是否有 miniblog数据库,没有的话需手动创建
b.迁移数据库:
Tools下的run manage.py task下依次直接执行命令:python manage.py makemigrations ; python manage.py migrate
注:
3.博客网站数据库的设计
a. 下面在myblog目录下的models.py中创建这三个表,由于Blog表包含外键与多对多关系,因此首先应当建立另外两个表:
分类(Category)表的创建:
- class Category(models.Model):
- """
- 文章分类
- """
- name = models.CharField(verbose_name='文章类别', max_length=20)
-
- class Meta:
- verbose_name = '文章类别'
- verbose_name_plural = verbose_name
-
- def __str__(self):
- return self.name
这里我们只需要包含一个字段name就行了。
标签(Tag)的创建:
- class Tag(models.Model):
- """
- 文章标签
- """
- name = models.CharField(verbose_name='文章标签', max_length=20)
-
- class Meta:
- verbose_name = '文章标签'
- verbose_name_plural = verbose_name
-
- def __str__(self):
- return self.name
博客(Blog)表的创建:
- from django.utils import timezone
-
- class Blog(models.Model):
- """
- 博客
- """
- title = models.CharField(verbose_name='标题', max_length=100)
- content = models.TextField(verbose_name='正文', default='')
- create_time = models.DateTimeField(verbose_name='创建时间', default=timezone.now)
- modify_time = models.DateTimeField(verbose_name='修改时间', auto_now=True)
- click_nums = models.IntegerField(verbose_name='点击量', default=0)
- category = models.ForeignKey(Category, verbose_name='文章类别')
- tag = models.ManyToManyField(Tag, verbose_name='文章标签')
-
- class Meta:
- verbose_name = '我的博客'
- verbose_name_plural = verbose_name
-
- def __str__(self):
- return self.title
最后: 再次执行:
- makemigrations
-
- migrate
- auth_group,
- auth_group_permissions,
- auth_permission,
- auth_user_groups,
- auth_user_user_permissions,
- django_admin_log,
- django_content_type,
- django_migrations,
- django_session,
- myblog_blog, #新增的博客表
- myblog_blog_tag, #这个是博客与标签的多对多关系表
- myblog_category, #新增的分类表
- myblog_tag #新增的标签表
4.通过admin管理后台
a.http://127.0.0.1:8000/admin管理用户配置
pycharm中输入如下命令:
createsuperuser
admin配置:
登录后台后,我们看到此时的后台只有用户、组和最近动作,并没有我们之前创建的我的博客、博客分类、博客标签这些内容。
我们可以在admin.py中进行配置,将其在后台展现出来:
- from myblog.models import Blog, Category, Tag
-
- admin.site.register(Blog)
- admin.site.register(Category)
- admin.site.register(Tag)
b.现在进入博客只有标题展示出来,如果我们还想添加其它字段,比如点击数、发表时间等,同样可以在admin.py中进行配置:
- class BlogAdmin(admin.ModelAdmin):
- list_display = ['title', 'click_nums', 'category', 'create_time', 'modify_time']
-
- admin.site.register(Blog, BlogAdmin)
如果还想对其它表进行配置,可以按照同样的方法,创建一个继承类即可。下面的注册也需要改一下。
配置完后,刷新下后台,即可看到我们已经成功的将点击数、博客分类、创建时间、修改时间这些字段添加进来了。
5.博客首页的开发
a.现在还没有首页,因为还没有模板:
博客前端模板托管在GitHub:django_blog_templates
将项目下载到本地后,将static文件夹整个拷贝到博客项目根目录下,然后在将index.html拷贝到templates目录下。这里的index.html就是我们博客的首页。