djiango--13(完整修改)

一、django命令行
    pip install django==2.2
    测试是否安装成功:django-admin
    创建django项目
      django-admin startproject 项目名称(不要用中文,例如 dj_test)
      项目名文件夹

                       

      __init__.py
      asgi       settings.py 配置文件       urls.py 路由与视图函数对应关系       wsgi.py       manage.py
    
    启动django
      python manage.py runserver
    停止django项目
      ctrl+c
    ps:命令行创建不会自动创建templates文件夹

 

 


    创建app       python3 manage.py startapp 应用名

               

      应用名文件夹
      __init__.py
      admin.py django后台管理
      models.py    模型表
      views.py 视图函数(不一定就是函数也可以是类)

    python manage.py makemigrations #生成表结构

    python manage.py migrate #同步到数据库

    python manage.py createsuperuser #创建后台管理用户

  二、pycharm 创建django

三、修改settings.py文件

1、修改数据库

修改数据库为MySQL配置

(1)修改settings.py内容,将原来的数据库注释,将数据库修改成以下内容(本次只用sqllite,可以不修改)

 1 # DATABASES = {
 2 #     'default': {
 3 #         'ENGINE': 'django.db.backends.mysql',
 4 #         'NAME': 'db1',
 5 #         'USER':'admin',
 6 #         'PASSWORD':'pass123',
 7 #         'HOST':'192.0.0.1',
 8 #         'PORT':'3306'
 9 #     }#MySql的配置
10 # }
(2)修改dj_test目录下__init__.py文件

 2、语言 修改成中文语言

3、时区修改成中国

4、修改成False

修改后

刷新页面

 

 四、初探django

1.目录urls种配置url

  

setting种配置html模板目录

步骤1:创建html文件

步骤2:实现视图

 

 步骤3:配置url

 

显示如图内容:操作

 

 涉及两部分代码

 

 

 

 引入其他项目内容(项目自己找的)--静态文件配置:

1、将index.html 复制到目录下

2、新建static目录,存放css,js,images

3、修改index.html中,js,css,images的路径

 4、settings.py的文件末尾增加内容

1 STATICFILES_DIRS = (
2     os.path.join(BASE_DIR,'static'),
3 )

 

5、刷新页面后如图:

 

  引入其他项目内容--生成表结构:

需要创建表和表内容如下:

category
  id
  name
  create_time
  update_time

修改user 目录下的models.py文件

 1 from django.db import models
 2 
 3 # Create your models here
 4 class Category(models.Model):
 5     name = models.CharField(verbose_name="分类名",max_length=50,unique=True)
 6     createtime = models.DateField(verbose_name="创建时间",auto_now_add=True)
 7     updatetime = models.DateField(verbose_name="修改时间",auto_now=True)
 8 
 9     class Meta:
10         db_table = 'category'#指定表名
11         #ordering = ['-create_time']#排序
12     # def __str__(self):
13     #     return self.name
生成表:
1、不记得命令可以先查看(mac电脑需要用python3命令)
python manage.py --help

 

  

(1)python manage.py makemigrations

 

 

(2)python manage.py migrate

 

 #注意:修改表名称,先执行(1)再执行(2)

生成成功后,会显示数据库内容如下:

 查看创建的表:

1、复制目录:

 

 2、

3、

 4:

 

 创建超级用户:

adg#创建后台管理用户

 

 访问:127.0.0.1:8000/admin 输入账号和密码

 

 

登录成功后,配置下文件,就可以后台操作数据库:

1、

 

 2、

 

 

管理后台:

 

 

可以手动增加数据库内容

 

 

查询数据:

1、

 

 2、

 

 3、

 单表增删改查:

models.py 同目录下创建models_test.py,想要执行操作,直接执行models_test.py 文件

 1 import django,os
 2 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dj_test.settings')
 3 django.setup()
 4 
 5 from user.models import Category,Article
 6 #
 7 
 8 # c_obj = Category.objects.create(name="Mysql1")#新增数据
 9 # print(c_obj.name)
10 # print(c_obj.create_time)
11 # print(c_obj.update_time)
12 
13 # obj = Category(name='Oracle')
14 # obj.save()
15 
16 #查询
17 # Category.objects.all()#所有的
18 # obj = Category.objects.get(id=1)
19 # obj = Category.objects.get(id__gt=1)#大于
20 # obj = Category.objects.get(id__lt=1)#小于
21 # obj = Category.objects.get(id__gte=1)#大于等于
22 # obj = Category.objects.get(id__lte=1)#小于等于
23 #
24 # print(Category.objects.get(name="Mysql"))#获取一条
25 # data = Category.objects.filter(id__gte=1,name="首页")
26 # print(data.first())
27 # print(data.last())
28 # Category.objects.filter(name__endswith='xx')#以什么结尾
29 # Category.objects.filter(name__startswith='xx')#以什么开头
30 # Category.objects.exclude(name="首页").filter(id__gte=1) #不等于
31 # Category.objects.filter(name__startswith='李').exclude(sex="女")#连用
32 # print(Category.objects.filter(name__contains='L') )#包含
33 # print(Category.objects.filter(name__icontains='l'))#不区分大小写包含
34 # print(Category.objects.filter(name__in=['首页','Mysql','python']))
35 
36 #or、!=、in、like  select * from xxx like '%李%';
37 
38 
39 #修改
40 # Category.objects.update(is_delete=True)#修改全表
41 
42 # obj = Category.objects.get(id=1)#改某条数据
43 # obj.is_delete = False
44 # obj.save()
45 
46 # Category.objects.filter(id__in=[2,3,4]).update(is_delete=False)
47 
48 #删除
49 
50 # Category.objects.all().delete()#删除全表
51 #
52 # obj = Category.objects.get(id=1)#改某条数据
53 # obj.delete()
54 # obj.save()
55 #
56 # Category.objects.filter(id__in=[2,3,4]).delete(is_delete=False)
57 
58 # Category.objects.all().order_by("create_time")#排序
59 
60 # c_obj = Category.objects.get(id=1) # 1->多
61 #
62 # print(c_obj.article_set.count())
63 # print(c_obj.article_set.all())
64 #
65 #
66 # #多
67 # article = Article.objects.get(id=1)
68 # print(article.category.name)

文章表和上传文件
1、models.py 文件创建文章表
class Article(models.Model):
    title = models.CharField(verbose_name='文章标题',max_length=100,db_index = True)
    desc = models.CharField(verbose_name='描述',max_length=200,blank = True,null = True,default = '这个文章没有标题')#blank 作用是后台管理用时可以不为空 default 默认值
    content = models.TextField(verbose_name='文章内容',)
    img = models.ImageField(verbose_name='文章图片',upload_to='article_img%Y%M',default= 'images/1.jpg')#需要安装 pip install pillow
    recommend = models.BooleanField(verbose_name='是否推荐',default=False)
    category = models.ForeignKey(Category,verbose_name='分类',on_delete=models.DO_NOTHING,db_constraint=False)
    createtime = models.DateField(verbose_name="创建时间", auto_now_add=True)
    updatetime = models.DateField(verbose_name="修改时间", auto_now=True)
    class Meta:
        db_table = 'article'#指定表名
        ordering = ['-createtime']
        verbose_name = '文章'
        verbose_name_plural = verbose_name
    def __str__(self):
        return self.title
2、settings.py 增加内容
MEDIA_ROOT = os.path.join(BASE_DIR,'static')

3、执行 python manage.py makemigrations和python manage.py migrate

4、admin.py 增加内容
1 admin.site.register(models.Article)
5、登陆后台可以增加数据库

实现分类页面:
1、将文章从数据库中读取显示
views.py
1 from django.shortcuts import render,HttpResponse
2 from .models import Category,Article
3 # Create your views here.
4 
5 def index(request):
6     catagories = Category.objects.filter(is_delete=False)
7     article = Article.objects.filter(is_delete=False)
8     data = {'nav':catagories,'articles':article}
9     return render(request,'index.html',data)
index.html
 1 <div class="r_box">
 2       {% for aricle in articles %}
 3     <li><i><a href="/"><img src="/static/{{ aricle.img }}"></a></i>
 4       <h3><a href="/">{{ aricle.title }}</a></h3>
 5       <p>{{ aricle.desc }}</p>
 6     </li>
 7 
 8       {% endfor %}
 9 
10   </div>

2、实现点击分类名称后,显示对应分类下的文章
1.views.py
 1 import datetime
 2 
 3 from django.shortcuts import render,HttpResponse
 4 from .models import Category,Article
 5 # Create your views here.
 6 
 7 
 8 def index(request):
 9     catagories = Category.objects.filter(is_delete=False)
10     article = Article.objects.filter(is_delete=False)
11     data = {'nav':catagories,'articles':article}
12     return render(request,'index.html',data)
13 
14 def category(request,id):
15     catagories = Category.objects.filter(is_delete=False)
16     article = Article.objects.filter(is_delete=False,category_id=id)
17     data = {'nav':catagories,'articles':article}
18     return render(request,'index.html',data)

2.urls.py
1 from django.contrib import admin
2 from django.urls import path
3 from user.views import index,category
4 urlpatterns = [
5     path('admin/', admin.site.urls),
6     path('index/', index),
7     path('', index),
8     path('category/<int:id>', category),
9 ]

3.index.html
1 <nav><div class="logo"><a href="/">杨青个人博客</a></div>
2     <h2 id="mnavh"><span class="navicon"></span></h2>
3     <ul id="starlist">
4         {% for n in nav %}
5       <li><a href="/category/{{ n.id }}">{{ n.name }}</a></li>
6     {% endfor %}
7     </ul>
8 </nav>

 

posted @ 2020-02-12 10:12  洛歆陌离  阅读(261)  评论(0编辑  收藏  举报