01、环境搭建+项目初始化+初级使用和配置[到模板的初级使用]

1、环境搭建[非正式,一点小集锦]

1、python+django+django rest framework安装
  --自行搜索,记住版本匹配
  --python3.6 django3.0
  --pip install djangorestframework -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simp
le/
  --pip install django-filter markdown

2、使用django rest framework
  --一套基于django开发的框架

3、手动创建pycharm--django基础模板框架
  --django-admin startproject MxShop
  --cd MxShop
  --python manage.py startapp users
  --创建templates文件夹

4、刷新mysql密码
  --net stop mysql
  --mysqld --console --skip-grant-tables --shared-memory
  --重开一个cmd,输入mysql -u root -p,点击enter两次
  --use mysql
  --update user set authentication_string='' where user='root';  密码置为空
  --quit
  --关闭mysqld --console --skip-grant-tables --shared-memory窗口
  --net start mysql
  --ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '111111';
  --quit
  --mysql -u root -p
  --111111即可

5、mysql配置
  DATABASES = {
    'default': {
      'ENGINE': 'django.db.backends.mysql',
      'NAME': 'mxshop',  # 数据库名称
      'USER': 'root',  # 用户名
      'PASSWORD': '111111',  # 密码
      'HOST': 'localhost',  # 主机
      'PORT': '3306',  # 端口
      'OPTIONS': { 'init_command': 'SET storage_engine=INNODB;' }  # 设置引擎驱动
  }}

06、新建数据库navicat/sqlyog可视化创建即可
  --创建数据库mxshop  选择utf8字符集  数据库排序规则utf8-genaral-ci

2、正式创建,项目初步建立

--设置 python 镜像 
        --pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
--pip3 install django  安装django
--使用django创建项目,django-admin startproject django_test01
    --如果创建中没有找到django-admin命令,可以使用 find / aname django-admin.py 找到文件位置
    --python3 路径/django-admin.py startproject django_test01  创建
--chmod 777 * 赋予所有文件读写权限,每个子文件夹也要这么做,不知道有没有快捷方式像 -r之类,没去试。有兴趣的可以自己试一下。在博客下面说一下谢谢!

--启动的时候python重新安装
    --https://www.cnblogs.com/lemon-feng/p/11208435.html
--sqlite版本太低重新安装
    --https://blog.csdn.net/weixin_43336281/article/details/100055435  

--这里建议降低django版本,适应sqlite3

--设置setting.py中 ALLOWED_HOSTS = ['*'] // 意为所有ip都可以访问
--python3 manage.py runserver 0.0.0.0:ip  //启动项目

3、创建子app

--python3 manage.py runserver 0.0.0.0:9000 
--设置文件夹下所有文件包括子目录的权限为777 
    --chmod -R 777 *
--python manage.py startapp login    python manage.py startapp book    python manage.py startapp pay  创建三个子应用

--settings.py中配置文件:
    --ALLOWED_HOSTS = ['*']  所有ip都可访问
    --添加INSTALLED_APPS,添加方式按照包的导入方式来做的:
        'pay.apps.PayConfig',
        'login,apps.LoginConfig',
        'book.apps.BookConfig'
    [注]:子应用名.apps.子应用名Config
--注解一下:每个应用下 apps.py 中一个单独的类一个名字的存在意义是方便引用
    from django.apps import AppConfig


    class LoginConfig(AppConfig):
        name = 'login'

4、模型

创建模型之前,进入数据库,本机密码 就是自己的姓名拼音
    --orm 框架:就是和数据库的表一一对应的,事先写好的API,优点如下:
        --不需要使用原生的数据库操作语句,节省了时间
        --对于不同的数据库不需要重新编辑sql语句,直接由orm自己解决了

    --创建一个数据库:
        --create database book_01 charset utf8;
        --create table t_book(
            id int primary key,
            name varchar(20)
        )charset utf8;

    --数据库配置 settings.py  [不配置也没问题,会使用默认的sqlite3数据库]
        
    --models.py中创建对应model,记住一个model类一张表,book的models.py中加入如下代码:
        from django.db import models

        # Create your models here.
        class BookInfo(models.Model):
            """
            1、主键id自动生成
            2、属性和models保持一致
            """
            name = models.CharField(max_length=20)


        class PeopleInfo(models.Model):
            name = models.CharField(max_length=20)
            gender = models.BooleanField()
            book = models.ForeignKey(BookInfo, on_delete=models.CASCADE)
    --模型迁移 model migrate
        --生成迁移文件
            python manage.py makemigrations
        --生成数据表
            python manage.py migrate
        

5、admin功能玩儿一下

--该功能就好比曹操的鸡肋一样,玩玩儿就算了

--设置settings.py文件中  LANGUAGE_CODE = 'zh-Hans' 使用汉语
--TIME_ZONE = 'Asia/Shanghai'   时区 默认格林尼治 改为上海

--python manage.pt runserver 0.0.0.0:9000
--访问 http://ip:port/admin      ipconfig

--创建超级使用者:
    --python manage.py createsuperuser  再设置 用户名[admin] 邮箱 密码[1234abc] 即可
--再次运行登录


--子应用的 admin.py文件 是和admin应用相关联的,这里注册一个类来做示例
    from django.contrib import admin
    from book.models import BookInfo

    # Register your models here.
    admin.site.register(BookInfo)
    [注]:这样就可以直接再admin中操作网页了

6、视图的定义

--views.py文件中定义的一个函数,暂且没有配置url
    from django.shortcuts import render
    from django.http import HttpResponse, HttpRequest

    # Create your views here.
    def index(request):
        return HttpResponse('liming')

--试图说明如下:
    --导入from django.http import HttpResponse, HttpRequest
    --request 是HttpRequest的实例对象,叫什么名字不重要
    --视图函数必须有返回,所以导入HttpResponse,但其实还有很多各种各样的response响应

7、url匹配

--上面定义了一个视图函数index,没有配置url,所以需要在urls.py文件中配置url

--在settings.py文件中加配置:APPEND_SLASH = True  表示默认在url结尾加上 /

--整个项目url入口,在settings.py文件中配置,具体如下:
    ROOT_URLCONF = 'python_django_heima_5.urls'  说明http是从这里配置进入寻找对应地址url,一般不修改

--第一种方式:url  总 urls.py中配置如下
    # 这里 导入文件时需要 include('book.urls') 使用include包住导入的urls,py文件,但是导入视图函数时就是直接 index 即可
    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url, include
    import book.urls

    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r'', include('book.urls')),
    ]

    book.urls.py中配置如下:book.vies.py 有一个事先定义好的视图函数 index
    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url
    from book.views import index

    urlpatterns = [
        url(r'index', index)
    ]

--第二种:path

8、模板

--不同于前后端分离的项目,模板就是存放所有前端文件,每次请求会返回一次性打包好的 html js css

--前后端分离的优势:
    --前后端商议好接口之后,分别独立开发,效率高
    --前端加载在前端服务器,和后端只有接口数据交互,后端不必要打包html js css返回给前端,后端压力减小
    --将数据接口 和 后端返回的打包资源接口分开,使得项目逻辑更加清晰

--template的使用:
    --新建template文件夹,创建index.html文件
    --配置settings.py中模板参数:其实就是一个模板路径
        TEMPLATES = [
            {
                'BACKEND': 'django.template.backends.django.DjangoTemplates',
                'DIRS': [os.path.join(BASE_DIR, 'template')], # base_dir + 模板名称
                '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',
                    ],
                },
            },
        ] 
    --render返回打包好的 html js css jpg等资源,代码示例如下:
        return render(request, 'index.html')  # 默认在配置好的template中寻找文件
    --render说明如下:
        render(request, template_source, context)
            --request:视图函数中的 request
            --template_source:一般为打包的视图文件
            --context:传递的参数
    --代码示例如下:
        def index(request):
            # return HttpResponse('book')
            name = 'limign'
            context = {
                'name': name
            }
            return render(request, 'index.html', context=context)
        在index.html中使用{{ name }}即可接收参数

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值