django开发-详细过程

1、安装django

pip install django

2、创建Django项目

django-admin startproject my_project1

(Pycharm也可以创建。如果用Pycharm创建,记得settings.py中的DIR templates 删除。 )

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],   # 删除
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

3、创建app & 注册:python manage.py startapp my_app

# settings.py文件
INSTALLED_APPS = [
    ...
    'my_app.apps.MyAppConfig'
]

4、配置 静态文件路径 & 模板的路径(放在app目录下)。

5、配置数据库相关操作(MySQL)

(1)第三方模块(django3版本):

pip install mysqlclient

(2)自己先去MySQL创建一个数据库,配置数据库连接settings.py

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': BASE_DIR / 'db.sqlite3',
#     }
# }

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_pj',  # 数据库名字
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',  # 那台机器安装了MySQL
        'PORT': 3306,
    }
}

(3)在app下的models.py中编写

from django.db import models


class Admin(models.Model):
    """ 管理员 """
    username = models.CharField(verbose_name="用户名", max_length=32)
    password = models.CharField(verbose_name="密码", max_length=64)

    def __str__(self):
        return self.username

    
class Department(models.Model):
    """ 部门表 """
    title = models.CharField(verbose_name='标题', max_length=32)

    def __str__(self):
        return self.title

(4)执行两个命令

>>>python manage.py makemigrations
>>>python manage.py migrate

6、其他操作

  • 在 urls.py ,路由 ( URL 和 函数的对应关系)。

  • 在views.py,视图函数,编写业务逻辑。

  • templates目录,编写HTML模板(含有模板语法、继承、{% static 'xx'%}

  • ModelForm & Form组件,在我们开发增删改查功能。

    • 生成HTML标签(生成默认值)

    • 请求数据进行校验。( 钩子方法,def clean_password(self) )

    • 保存到数据库(ModelForm)

    • 获取错误信息。

  • Cookie和Session,用户登录信息保存起来。

  • 中间件,基于中间件实现用户认证 ,基于:process_request

from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import HttpResponse,redirect

'''中间件:登录拦截器'''
class AuthMiddleware(MiddlewareMixin):

    def process_request(self,request):
        # 排除那些不需要登录就能访问的页面   (完整的url地址为:https:localhost:8080/login/)
        # request.path_info 获取当前用户请求的URL: /login/
        if request.path_info in ["/login/","/image/code/"]:  # 获取当前用户请求的URL /login/
            return

        # 1.读取当前访问的用户的session信息,如果能读到,说明已登陆过,就可以继续向后走。
        info_dict = request.session.get("info")  # 用户的session信息
        # print(info_dict)  # {'id': 8, 'name': 'root'}
        if info_dict:
            return

        # 2.到这说明没有登录过,重定向到登录页面
        return redirect("/login/")

7、ORM操作

8、使用文件数据库:E:\python\django\django_db_sqlites3

(1)创建django项目:django-admin startproject mysite(或用pycharm直接创建)

(2)创建app:python manage.py startapp my_app

注册app:

# settings.py文件
INSTALLED_APPS = [
    ...
    'my_app.apps.MyAppConfig'
]

(3)在models.py中编写数据库表:

from django.db import models


class Admin(models.Model):
    """ 管理员 """
    username = models.CharField(verbose_name="用户名", max_length=32)
    password = models.CharField(verbose_name="密码", max_length=64)

    def __str__(self):
        return self.username

    
class Department(models.Model):
    """ 部门表 """
    title = models.CharField(verbose_name='标题', max_length=32)

    def __str__(self):
        return self.title

(4)执行两个命令:

>>>python manange.py makemigrations
>>>python manange.py migrate

(5)会在项目中自动创建一个文件数据库,他人可以在项目中直接使用

 (6)在pycharm中打开db.sqlite3文件数据库,把db.sqlite3拖进右边的Datebase中,然后点击下载数据库驱动,即可打开文件数据库

 (7)在表中操作数据

9、想要去数据库中获取数据时:对象/字典

# 对象,当前行的所有数据。
row_object = models.Order.objects.filter(id=uid).first()
row_object.id
row_object.title


# 字典,{"id":1,"title":"xx"}
# values("id","title") 表示只查询这些属性
row_dict = models.Order.objects.filter(id=uid).values("id","title").first()



# queryset = [obj,obj,obj,]
queryset = models.Order.objects.all()



# queryset = [ {'id':1,'title':"xx"},{'id':2,'title':"xx"}, ]
queryset = models.Order.objects.all().values("id","title")



# queryset = [ (1,"xx"),(2,"xxx"), ]
# values_list获取的是一个个元组
queryset = models.Order.objects.all().values_list("id","title")

10、一些常用的网站:

(1)BootStrap样式:全局 CSS 样式 · Bootstrap v3 中文文档 | Bootstrap 中文网

(2)武沛齐的django基础教程:Python之路【第十六篇】:Django【基础篇】 - 武沛齐 - 博客园

(3)图像验证码:Python生成随机验证码 - 武沛齐 - 博客园

(4)图表网站echarts:Handbook - Apache ECharts    

https://echarts.apache.org/examples/zh/editor.html?c=line-stack

(5)图标网站highcharts:1 分钟上手 Highcharts | Highcharts 使用教程 

基础柱状图 | Highcharts

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值