0基础快速上手Djiango项目的开发

Djiango

1.安装Djiango

pip install Djiango

Python的主体框架

C:python39
    -python.exe
    -Scripts
        -pip.exe0
        -djiango-admin.exe  【工具,用来创建djiango项目中的文件和文件夹】
    -Lib
        -内置模块
        -site-packages
            -openpyxl
            -flask
            -djiango    【框架的源码】

2.创建Djiango的项目

djiango中项目会有一些默认的文件和文件夹
2.1在终端

打开终端

进入djiango的工作空间

执行命令创建项目

“C:\python39\Scripts\djiango-admin.exe” startproject “项目名称”
如果"C:\python39\Scripts" 已经加入了系统环境变量
直接 djiango-admin startproject 项目名称

3.pycharm创建djiango项目

选好解释器,左上角创建Djiango项目

 

特殊说明:
命令行,创建的项目是标准项目
pycharm,是在标准上加了点东西
    1.多创建了一个templates目录(需要删除)
    
    
    2.并且在标准的settings里面多加了一点东西(里面导入的os作用是使app可以调用外部templates里面的html页面
    如果加上了 [os.path.join[(BASE_DIR,"templates"])],则会优先从根目录寻找html

创建后项目(myprojects)目录(结构树)讲解:
  • myprojects
        manage.py         【项目的管理,启动项目,创建app,数据管理】【不要动】
        myprojects
            __init__.py
            settings.py 【项目的配置文件,连接数据库的信息,创建app信息】【常常操作文件】
            urls.py     【URL和函数的对应关系,要把路径都写在这个里面】【常常操作文件】
            asgi.py     【接受网络请求】(不要动,同步式接收)
            wsgi.py     【接受网络请求】(不要动,异步式接收)

4.APP创建和APP目录讲解

-项目
    -app,用户管理【表结构,函数,HTML模板,CSS】
    -app,订单管理【表结构,函数,HTML模板,CSS】
    -app,后台管理【表结构,函数,HTML模板,CSS】
    -app,网站    【表结构,函数,HTML模板,CSS】
    -app,API    【表结构,函数,HTML模板,CSS】
简单的开发用不到多app,一般情况下,项目创建一个app就可以了

创建app的命令:

python manage.py startapp app01
python manage.py startapp app02
python manage.py startapp app03

创建app后,会生成以下文件

├─app01                   
│  ├─ __init__.py           
│  ├─ admin.py            【固定,不用动】djiango默认提供admin的后台管理
│  ├─ apps.py             【固定,不用动】app启动类
│  ├─ migrations          【固定,不用动】数据库变更记录
│		└─ __init__.py
│  ├─ models.py           【***重要***】对数据库做操作用的
│  ├─ tests.py            【固定,不用动】单元测试用的,一般不测试就不用
│  └─ views.py            【***重要***】存写函数的
├─manage.py
└─ myproject2
   ├─ __init__.py  
   ├─ asgi.py      
   ├─ wsgi.py 
   ├─ settings.py
   └─ urls.py	          【***重要***】 【URL->函数】

5.上手

(1)创建好app后,需要注册app
在settings.py里面注册app
去找INSTALLED_APPS,在内容中加入app01.apps.App01Config
去调用apps.py里面App01config的类,作为app的启动类

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    # 注册app  (对于去寻找html,这个也是按照app01,app02,app03的顺序去寻找的)
    "app01.apps.App01Config",
]
(2)编写url和函数的对应关系(urls.py,view.py)
urls.py    【写访问路径url目录和函数的对应关系】
view.py    【写对应路径函数的具体内容】

from django.urls import path
# 导入执行的函数
from app01 import views
urlpatterns = [
    # path("admin/", admin.site.urls),
    # 添加URL和函数的对应关系
    #当用户访问到www.xxx.com/index 时,会调用跳转到这个views.index函数
    path("index/", views.index),
    path("user/list/", views.user_list),
    path("user/add/", views.user_add),
    path("tpl",views.tpl),
    path("news/",views.news),
]
在views.py中需要写出对应的函数方法,比如登录index页面对应的方法
def index(request):
    return render(request,"user_index.html")
# reder(request,"xxx.html")表示页面进入到一个页面
# 在当前的app文件夹下写一个templates,在templates文件夹下创建一个html
# 用过reder函数 使其去app目录下的templates目录去寻找user_index.html(根据app注册顺序,逐一的去他们的templates目录中找,按顺序一个一个找)

(3)启动djiango

命令行方式启动djiango

python manage.py runserver 

pycharm项目启动

选择自己的项目(项目名)

6.静态文件

在开发过程中,一般将:图片\CSS\JS\插件(plugins) 都会当作静态文件处理。
(1)static目录的创建

引用静态文件的特点

7.djiango模板语法

#在views.py里面定义一个tpl方法的对应的页面
def tpl(request):
    name="韩超"
    roles=["管理员","CEO","保安"]
    user_info = {"name":"郭子","salary":"10000","role":"CEO"}
    data_list = [{"name":"郭子","salary":"10000","role":"打工仔"},
                 {"name":"远子","salary":"100000","role":"CEO"},
                 {"name":"麻子","salary":"1000000","role":"老总"}]
    return render(request,'tpl.html',{"n1:name"},{"n2:roles"},{"n3:user_info"},{"n3:data_list"})
#在对应的tpl页面调用
<div>{{n1}}</div>
<div>{{n2}}</div>

<div>{{n2.0}}</div>
<div>{{n2.1}}</div>
<div>{{n2.2}}</div>

<div>{% for item in n2 %}
    	<span>{{ item }}</span>
{% endfor %}

{% for k,v in n3.items %}
    <li>{{ k }}={{ v }}</li>
{% endfor %}

{% for item in n3.keys(或者values) %}
    <li>item</li>
{% endfor %}

<div>{{ n3 }}</div>
<div>{{ n3.name }}</div>
<div>{{ n3.salary }}</div>
<div>{{ n3.role }}</div>

<div>{{ n4.0.name}}</div>
<div>{{ n4.0.salary }}</div>
<div>{% for item in n4 %}
    <div>{{ item.name }}  {{ item.salary }}</div>
{% endfor %}
</div>

#html里面的条件语句
{% if n1 == "郭子" %}
    <h1>你尽然知道郭子最帅,你真棒!</h1>
{% elif n1== "xxx" %}
    <h1>你猜对了,郭子最帅!!!</h1>
{% else %}
    <h1>你猜错了,分明郭子最帅!!!</h1>
{% endif %}

#页面显示
韩超

["管理员","CEO","保安"]

管理员 CEO 保安

管理员 CEO 保安

{'name': '郭子', 'salary': '10000', 'role': 'CEO'}
郭子
10000
CEO


name=郭子
salary=10000
role=CEO


郭子
10000
郭子 10000
远子 100000
麻子 1000000

8.请求和响应

request:

def something(request)
	#request是一个对象,封装了用户发送过来的所有请求相关的数据
    
    # 1.获取请求方式 GET/POST 两种模式
    print(request.method)
    # 2.在URL上传递一些值  /something/?n1=123&n2=999
    print(request.GET)
    # 3.在请求体中提交数据
    print(request.POST)
    
    # [响应]4.HttpResponse("返回内容"),内容字符串内容返回给请求者。
    # return HttpResponse("返回内容")
    
    # [响应]5.读取HTML的内容 + 渲染(替换) ->  字符串, 返回给用户浏览器。
    # return render(request,'something.html',{"title:":"来了"})
    
    # [响应] 让浏览器重定向到其他页面
    return redirect("http://www.baidu.com")

重定向

9.数据库操作

mysql数据库 + pymysql(pymysql可以对mysql进行增删改查)
Djiango开发操作数据库更简单,内部提供了ORM框架。(ORM框架相当于是一个翻译器,将代码转换成sql语句后,交给mysqlclient等pip下载的模块去处理执行sql语句,从而增删改查,修改数据库)

9.1安装第三方模块

pip install mysqlclient

9.2 ORM

作用:
1.创建、修改、删除数据库中的表。(不用写sql语句,但是无法创建数据库)
2.操作表中的数据。(不用写sql语句)
	insert into ...
	update ...
	select ...
(1)创建sql数据库
create database djiangoproject DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
(2)dijiango项目配置数据库
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
                "USER": "root",
                "PASSWORD" : "123456",
                "HOST" : "127.0.0.1",
                "PORT" : "3306",
        ##数据库名
                "NAME" : "djiangoproject"
    }
}

(3)djiango操作表

创建表

删除表

修改表

#在models.py文件中写入:	
from django.db import models

class User(models.Model):
    username = models.CharField(max_length=100, unique=True)
    password = models.CharField(max_length=32, unique=False)
    email = models.EmailField()
    age = models.IntegerField()

#系统会自动生成对应的表
#通过生成一个类,来生成一个表
''' creat table app01_user(
    id bigint auto_increment primary key,
    name varchar(100),
    password varchar(32),
	age int,
    email email
    )
 '''

执行命令开始执行生成对应的表(1.在确保已经安装了mysqlclient包的情况下)(2.可以先pwd查看路径)(3.保证app01已经在settings.py里面注册了)

python manage.py makemigrations
python manage.py migrate

添加表

#简单的来说就是想添加表,就直接在models.py里面直接添加类,类继承models模块里面的Model用来创建表
from django.db import models
class userinfo(models.Model){
    username = models.CharField(max_length=100,unique=Ture)
}

#而在原有已经创建的表中添加字段,就需要添加一个默认值来匹配表中已有字段的那一列,eg:
#①已经执行过上面的命令后又添加了一个password字段,就需要default=2;
#②或者设置null=True,black=True来设置这个字段可以为空也行;
from django.db import models
class userinfo(models.Model){
    username = models.CharField(max_length=100,unique=Ture)
    password = models.CharField(default="xxxx",max_length=100,unique=Ture)
    age = models.IntegerField(null=True,black=True,max_length=100,unique=Ture)
}

操作数据

修改数据

增加数据

#都是在view.py文件中进行操作的
class User(models.Model):
    username = models.CharField(max_length=100, unique=True)
    password = models.CharField(max_length=32, unique=False)
    email = models.EmailField()
    age = models.IntegerField()
#对表中的数据进行操作

#新建数据 相当于数据库语句(本质) insert into app01_department(age)values(18)
User.objects.create(age=18)

#删除数据(直接在view.py文件中过滤删除即可)
User.objects.filter(id=3).delete()
User.objects.all().delete() #删除整张表所有的数据

#获取数据 QuerySet类型的 相当的于获取的是一个列表,列表里面是一行一行的数据,[行,行,行]
data_list = User.objects.all(age=18)
for obj in data_list:
    print(obj.id,obj.name,obj.password,obj.age)

    
row_obj = User.objects.filter(id=3).first() #获取第一条数据[对象]
print(row_obj.id,row_obj.name,row_obj.password,row_obj.age)

#更新数据
User.objects.filter(name="郭子").updata(password="999")

前端和后端相互连接:

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值