Django入门学习心得笔记(1)

14 篇文章 0 订阅
7 篇文章 1 订阅

文章目录


前言

给以后的自己看,Django前后端的知识,学习后将其归纳总和起来

一、创建Django项目的命令

django-admin startproject aolongs

创建一个django项目,在项目名称后面空格并加上‘.’可以在单层目录下创建项目,这样不会有路径问题

django-admin startapp aoapp

创建一个项目app,主要是为了存储数据库,和一些前后端模板的
创建之后需要在项目的setting.py文件INSTALLED_APPS中添加app的名字
创建后的模板结构

二、连接数据库和连接前端

1.将数据库的配置文件在setting.py中替换

代码如下(示例):

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '数据库名',
        'HOST':'127.0.0.1',
        'POST':3306,
        'USER':'root',
        'PASSWORD':'密码',
    }
}

2.前端模板配置

如刚开始的创建结构文件目录一样将templates文件夹创建好,也可以创建到app文件夹里,但是可能会出一些路径问题,并且一旦出现很难解决,移出可以解决。

创建之后在setting.py中的TEMPLATES

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')] #配置当前的路径
        ,
        'APP_DIRS': True,#从当前app目录下找,false从根目录找
        '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',
            ],
        },
    },
]
数据库还需要在项目框架里添加代码
# 在与 settings.py 同级目录下的 __init__.py 中引入模块和进行配置
import pymysql
pymysql.install_as_MySQLdb()
一般在templates中创建文件夹以当前的app为名,便于管理当前app的html文件,创建简单的index.html输出helloworld.
#在app文件夹中的views.py中写入连接前后端的方法,使用render连接
# Create your views here.
def homepage(request):
    return render(request, 'aoapp/index.html')

在views.py中写连接的方法后,将访问的url也配置好就可以访问了,默认的urls.py在项目文件夹中,如果有多个app相对来说是不太方便的,但是结果还是能实现。
from django.contrib import admin
from django.urls import path, include
from aoapp.views import homepage

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',homepage)
]

比较好的方法是在当前app中也创建urls.py,用来配置当前app相关的网址路径。

在主项目中引用当前app中的urls.py

from django.contrib import admin
from django.urls import path, include
from aoapp.views import homepage

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include("aoapp.urls"))
]

在app文件夹中创建相应的urls.py

from django.urls import path
from aoapp.views import homepage

urlpatterns = [
    path('',homepage),
]		
最后在命令行中使用python manage.py runserver就可以运行了。

三、数据库操作

数据库的操作主要是在models.py中创建,views.py中执行其他ORM的操作。

ORM:对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。
自己理解:Django针对于数据库做的一种映射,即不使用原生的sql语句,将所有数据库的写法都归并为Django自己的写法。

1.创建数据库

思想:创建三个表,顾客,产品和订单,顾客通过在订单中选购产品,所以顾客和产品需要和订单表建立主外键的简单关系

from django.db import models


# Create your models here.
class Customer(models.Model):
    name = models.CharField(max_length=30)
    phone = models.CharField(max_length=30)
    email = models.EmailField()
    time_created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

class Product(models.Model):
    #用于页面上的选择框标签,需要先提供一个二维的二元元组,
    # 第一个元素表示存在数据库内真实的值,第二个表示页面上显示的具体内容。在浏览器页面上将显示第二个元素的值
    CATEGORY = (
        ('Indoor', 'Indoor'),
        ('Outdoor', 'Outdoor'),
    )
    name = models.CharField(max_length=30)
    price = models.CharField(max_length=30)
    category = models.CharField(max_length=30, choices=CATEGORY)#可以提供选择框选项
    description = models.TextField(blank=True, null=True)
    #blank用于表单的认证,被设为blank=False(默认为False)的字段在填写表单时不能为空。
    #null用于规定数据库中的列的非空性,被设为null=False(默认为False)的字段在数据库中对应的列不能为空
    # (用SQL来说明就是为该列添加了NOT NULL的约束)。

    def __str__(self):
        return self.name

class Order(models.Model):
    STATUS = (
        ('Pending', ' Pending '),
        ('out for delivery', 'out for delivery'),
        ('Delivered', 'Delivered')

    )
    #添加外键约束,和前面两个表联系起来,设置级联(即父表删除,子表删除), related_name约束名
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE, related_name='c_order')
    product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='p_order')
    time_created = models.DateTimeField(auto_now_add=True)
    status = models.CharField(max_length=30, choices=STATUS)

2.数据表迁移,创建表并映射到数据库中的命令

python manage.py migrate

python manage.py makemigrations #(主要是相当于更新models的内容并绑定数据库)
创建成功

绑定后,就会在app文件夹里的migrations文件夹中生成文件,那0001_initial.py文件里的就是用来创建的标准映射代码,给我们默认每个表里面添加了主键id

在这里插入图片描述

python manage.py migrate #相当于执行生成的py文件,创建表

操作问题

上述问题是因为已经创建过表然后删除了再试的,因为创建数据库表的时候其实Django会创建很多相应的表,有相应的记录在其中,所以需要删除django_migrations表中的记录

在这里插入图片描述

再执行命令python manage.py migrate即可在数据库中创建表

在这里插入图片描述

3.配置后台管理

配置时区

在setting.py中修改

LANGUAGE_CODE = ‘zh-hans’

TIME_ZONE = ‘Asia/Shanghai’

创建超级管理员

命令行中输入,并在提示后创建用户名,邮箱,密码等

python manage.py createsuperuser

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值