django学习笔记1

记录第一个django项目过程,过程难得顺利,参考链接: https://code.ziqiangxuetang.com/django/django-cms-develop.html.

环境

python3.7.4(基础python环境安装此处不赘述)
在这里插入图片描述
django2.7.7
在这里插入图片描述

demo操作

1.新建项目路径
2.cd 项目路径

3.创建项目 minicms 和 应用 news

#  创建项目 minicms 和 应用 news
django-admin.py startproject minicms
cd minicms
python manage.py startapp news

此时会在指定目录下生成项目工程
在这里插入图片描述
4.添加 news 到 settings.py 中的 INSTALLED_APPS 中(文件路径:D:\django\minicms\minicms\settings.py)
在这里插入图片描述
5.规划 news 中的栏目和每篇文章相关的字段,修改models.py(文件路径:D:\django\minicms\news\models.py)

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
 
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
 
 
@python_2_unicode_compatible
class Column(models.Model):
    name = models.CharField('栏目名称', max_length=256)
    slug = models.CharField('栏目网址', max_length=256, db_index=True)
    intro = models.TextField('栏目简介', default='')
 
    def __str__(self):
        return self.name
 
    class Meta:
        verbose_name = '栏目'
        verbose_name_plural = '栏目'
        ordering = ['name']  # 按照哪个栏目排序
 
 
@python_2_unicode_compatible
class Article(models.Model):
    column = models.ManyToManyField(Column, verbose_name='归属栏目')
 
    title = models.CharField('标题', max_length=256)
    slug = models.CharField('网址', max_length=256, db_index=True)
 
    author = models.ForeignKey('auth.User', blank=True, null=True, verbose_name='作者')
    content = models.TextField('内容', default='', blank=True)
 
    published = models.BooleanField('正式发布', default=True)
 
    def __str__(self):
        return self.title
 
    class Meta:
        verbose_name = '教程'
        verbose_name_plural = '教程'

6.创建数据库

python manage.py makemigrations news
python manage.py migrate

7.创建一个脚本,导入一些数据到数据库中
新建文件create_demo_records.py与manage.py在同一目录(D:\django\minicms\create_demo_records.py)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2015-07-28 20:38:38
# @Author  : Weizhong Tu (mail@tuweizhong.com)
# @Link    : http://www.tuweizhong.com
 
'''
create some records for demo database
'''
 
from minicms.wsgi import *
from news.models import Column, Article
 
 
def main():
    columns_urls = [
      ('体育新闻', 'sports'),
      ('社会新闻', 'society'),
      ('科技新闻', 'tech'),
    ]
 
    for column_name, url in columns_urls:
        c = Column.objects.get_or_create(name=column_name, slug=url)[0]
 
        # 创建 10 篇新闻
        for i in range(1, 11):
            article = Article.objects.get_or_create(
                title='{}_{}'.format(column_name, i),
                slug='article_{}'.format(i),
                content='新闻详细内容: {} {}'.format(column_name, i)
            )[0]
 
            article.column.add(c)
 
 
if __name__ == '__main__':
    main()
    print("Done!")

8.运行脚本 导入数据

python create_demo_records.py

在这里插入图片描述
9. 完善后台的功能,在后台添加,编辑,删除数据

更改 news/admin.py(D:\django\minicms\news\admin.py)

from django.contrib import admin
 
from .models import Column, Article
 
 
class ColumnAdmin(admin.ModelAdmin):
    list_display = ('name', 'slug', 'intro',)
 
 
class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'author', 'pub_date', 'update_time')
 
 
admin.site.register(Column, ColumnAdmin)
admin.site.register(Article, ArticleAdmin)

10.创建一个超级管理员(如果你没有后台帐户和密码的话)

python manage.py createsuperuser

在这里插入图片描述
11.启动服务:

python manage.py runserver 8002

在这里插入图片描述
12.访问
http://127.0.0.1:8002/admin/
在这里插入图片描述
输入用户名、密码
在这里插入图片描述

过程中遇到的问题

创建数据库时,报错:TypeError: init() missing 1 required positional argument: ‘on_delete’
在这里插入图片描述
解决方案:
修改文件,在外键值的后面加上 on_delete=models.CASCADE
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值