week11 day2 django入门1

一、注意事项

1.1 如何让你的计算机能够正常的启动django项目

  1. 计算机的名称不能有中文. 我的电脑->属性->计算机名
  2. 一个pycharm窗口只开一个项目.
  3. 项目里面所有的文件也尽量不要出现中文
  4. python解释器尽量使用3.4~3.6之间的版本
    项目排错提示: 如果你的项目报错 你点击最后一个报错信息 去源码中把逗号删掉

1.2 django版本问题

LTS: 全称 Long Term Support 官方维护的版本

版本推荐: 1.8(2015) 1.11(2018) 2.2(2019)

在这里插入图片描述
1.X 2.X 3.X(直接忽略)
1.X和2.X本身差距也不大 主要以1.X为例 会明与2.X区别
启示语录: 公司之前用的1.8 满满过渡到了1.11版本 有一些项目用的2.0

1.3 django安装

pip3 install django==1.11.11 -i https://pypi.douban.com/simple
    
提示: 如果已经安装了其他版本 无需自己卸载直接重新装 会自动卸载安装新的
    
排错: 如果报错 看看是不是timeout 如果是 那么只是网速波 重新安装即可

验证是否安装成功的方式: 
    1. 终端输入django-admin看看有没有反应
    2. 进入python交互式命令行
        >>> import django
        >>> django.get_version();
        '1.11.11'

运行django-admin命令报错Fatal error in launcher: Unable to create process using

# 运行django-admin创建django项目时报错
G:\Django
$  django-admin -v
Fatal error in launcher: Unable to create process using '"'
    
    
# 之前我win10崩了, 重新安装了系统, 导致很多命令都没法用了先卸载django
pip uninstall django

# 然后重新安装django
pip3 install django==1.11.11 -i https://pypi.douban.com/simple

# 提示: 如果pip命令也出现错误Fatal error in launcher: Unable to create process using, 那么更新pip命令
python -m pip install --upgrade pip

二、django基本操作

2.1 命令行操作

第一步:创建django项目

# 提示: 这种创建是创建到当前文件夹下, 如需创建指定文件夹需要切换到指定文件夹下再执行这条命令
django-admin startproject 项目名 

第二步:启动django项目

'''一定要先切换到项目目录下'''
python3 manage.py runserver  # runserver后面跟要绑定ip和端口. ip不指定默认使用本机环回地址, 端口8000. 可以 --/ 查看命令具体使用方法.


# 上面启动了django以后, 在浏览器中输入开启所指定的ip:port访问页面内容出现如下一句话
Next, start your first app by running python manage.py startapp [app_label].

第三步:创建应用

# 创建应用
python3 manage.py startapp app01  # app01 应用名应该做到见名知意

2.2 pycharm操作

第一步:创建django项目

在创建项目的时候指定Application可以创建一个,且同时也会在settings.py配置文件中INSTALLED_APPS中注册。
在这里插入图片描述

第二步:启动django项目
在这里插入图片描述

第三步:创建应用(快捷键 ctrl + alt + r)

在这里插入图片描述
第四步:修改端口号以及创建server
在这里插入图片描述
在这里插入图片描述

三、应用

3.1 创建的app介绍

django是一款专门用来开发app的web框架。

django框架就类似于是一所大学(空壳子),app就类似大学里面的各个学院(具体功能的app)。

比如开发淘宝:
	订单相关
	用户相关
	投诉相关
创建不同的app对应不同的功能:
	选课系统包含
		老师功能
		教师功能
		管理员功能

一个app就是一个独立的功能模块

3.2 创建的应用一定要去setting.py配置文件中找到INSTALLED_APPS进行注册

在这里插入图片描述

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',  # 注册全写
    'app01',  # 注册简写
]

3.3 补充: 你在用pycharm创建项目的时候 pycharm可以帮你创建一个app并且自动注册

在这里插入图片描述

四、目录结构

4.1 目录结构介绍

mysite/
├── manage.py  # 管理文件. django的入口文件
├── mysite     # 项目目录
    ├── __init__.py
    ├── settings.py  # 配置
    ├── urls.py      # 路由和视图函数的对应关系(路由层)
    └── wsgi.py      # runserver命令就使用wsgiref模块做简单的web server
├── db.sqlite3       # django自带的sqlite3数据库(小型数据库 功能不是很多还有bug)
└── app01      # 应用目录
    ├── migrations   # 数据库迁移记录
        └── __init__.py
    ├── __init__.py
    ├── admin.py     # django后台管理
    ├── apps.py      # 注册使用
    ├── models.py    # 数据库相关的 模型类(orm)
    ├── test.py      # 测试文件
    └── views.py     # 视图函数(视图层)

4.2 setting.py文件介绍

BASE_DIR项目目录
DEBUG上线之后改为False.
ALLOWED_HOSTS允许访问的主机. 上线之后可以写*. 星号表示所有
INSTALLED_APPS注册的app. (app就是功能模块)
MIDDLEWAREDjango中简件
TEMPLATESHTML文件存放路径配置
DATABASES项目指定的数据库
LANGUAGE_CODE文字编码
TIME_ZONE时间

五、命令行与pycharm创建django项目的区别

用命令行创建django项目:用命令行创建django项目不会自动创建templates文件夹,并且也不会自动配置templates文件夹路径,需要你手动到settings.py配置文件中找到TEMPLATES在DIRSkey对应的[]中加上os.path.join(BASE_DIR, 'templates')

用pycharm创建django项目:会自动创建并且自动配置路径,还可以自动帮你创建一个应用并且自动注册,不过只能在创建项目的时候创一个,后续的应用(app02)创建需要手动到settings.py配置文件中找到INSTALLED_APPS中添加app02.apps.App02Config或者app02

TEMPLATES两者对比示例:

# 命令行创建不会自动有templates文件夹 需要你自己手动创建, 而pycharm会自动帮你创建并且还会自动在setting.py配置文件中找到TEMPLATES配置对应的路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 

# pycharm创建
TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'templates')]
    ...
]

# 命令行创建
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        ...
]  

六、django小白必会三板斧

6.1 基本使用

HttpResponse,render,redirect
from django.shortcuts import HttpResponse,render,redirect

# 一、返回字符串类型的数据
return HttpResponse('字符串')

# 二、返回html页面
# 1.动态html页面
return render(request,'login.html')
def ab_render(request):
	# 视图函数必须要接受一个形参request
	user_dict = {'username':'jason','age':18}

	# 2.动态HTML页面
	'''
	动态HTML页面的两种模板语法传值方式
		1)'data':user_dict
			user_dict:指定需要传给HTML文件的数据
			data:在HTML页面中操作的变量
		2)locals会将所在名称空间中所有的名字全部传递给html页面
			传递给html页面的数据这里不仅仅是user_dict,还有request
	'''
	# 第一种传值方式:更加的精确,节省资源
	return render(request,'01 ab_render_html',{'data':user_dict,'date':123})
	
	# 第二种传值方式:当你要穿的数据特别多的时候
	return render(request,'01 ab_render_html',locals())

# 三、重定向
# 1.返回他人的网址的重定向
return redirect('https://mzitu.com')

# 2.但会自己的网址的重定向
return redirect('/index/')

6.2 实例

'''views.py文件代码'''
from django.shortcuts import HttpResponse,render,redirect

# create your views here
"""
urls.py文件
	url(r'^admin/',admin.site.urls)
	url(r'http_response_data/', views.http_response_data),
    url(r'render_data/', views.render_data),
    url(r'redirect_other/', views.redirect_other),
    url(r'redirect_self/', views.redirect_self),
    url(r'book_manage/', views.book_manage),
"""

def http_response_data(request):
	"""
	HttpResponse内部传入一个字符串参数,返回给浏览器
	:param request:请求相关的所有数据对象,比你之前的env更牛逼
		之前env放的是一个大字典,而我们可以对request使用对象的操作方式’request.‘
	:return:
	"""
	print(request._-dict__)    # {...,'PATH_INFO':/http_response_data/}
	print(request.path_info)   # '/http_response_data/'
	return HttpResponse('返回字符串的数据')

def render_data(request):
	"""
	返回html文件的内容
	"""
	return render(request,'login.html')

def redirect_other(request):
	"""
	重定向:返回他人的网址的重定向
	"""
	return redirect('https://www.mzitu.com')

def redirect_self(request):
	"""
	重定向:返回自己的页面
	"""
	return redirect('/book_manage/')

def book_manage(request):
	return render(request,'book_manage.html')

七、总结

# 4大注意事项:
    1. 计算机名称不能有中文
    2. pycharm一个窗口开一个项目
    3. 项目文件夹不要出现中文
    4. 解释器版本使用3.4~3.6
        如果项目报错点击最后一条报错信息, 去除源码中的逗号

# Django版本使用
    1xx 2xx 3xx
    使用LTS官方长时间支持的版本版本: 1.8  1.11 2.2

# Django安装: 再次安装会覆盖(配置了环境变量)
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple  django=1.11.11
    报错timeout是网速问题

# 检测安装成功: (配置了环境变量)
    终端: django-admin
    交互式命令行:
        import django
        django.get_version()

# Django基本操作
    # 命令行操作
        创建django项目:  django-admin startproject 项目名
        启动django项目:  python3 manage.py runserver
        创建应用:  python3 manage.py startapp 应用名

    # pycharm操作
        创建django项目:  new project -> Django -> Location,Existing Interpreter,create
        启动django项目:
        创建应用:
            ctrl+alt+r -> startapp 应用名.
            在创建项目时指定Application可以创建一个, 且同时也会在settings.py配置文件中INSTALLED_APPS中注册.

# 应用: 是一个具有具体功能的app, 是一个独立的功能. 例如: 选课系统
    !!!注意!!!: 创建应用时一定要去settings.py文件中找到INSTALLED_APPS中注册.
    注册的2种写法: app01.apps.App01Config   或者  app01

# 目录结构:
    mysite
        __init__.py
        manage.py        # Django启动入口
        mysite
            __init__.py
            settings.py  # 配置文件
            urls.py      # 路由与视图函数对应关系
            wsig.py      # runserver命令就是使用wsgiref模块做的简单的web服务器
        db.sqlite3       # Django自带的小型数据库
        app01
            migrations   # 数据库迁移记录
                __init__.py
            __init__.py
            admin.py     # django后台管理
            apps.py      # 注册使用
            models.py    # 数据库相关的模型类 ROM
            views.py     # 视图函数
            test.py      # 测试文件
        app....


    # settings.py文件
        BASE_DIR      项目目录
        INSTLLED_APPS 注册的app
        TEMPLATES     HTML文件路径
        ALLOWED_HOSTS 允许访问的主机


# 命令行与pycharm创建django项目的区别
    1. 命令行创建没有templates文件, 需要自己创建, 并到settings.py中找到TEMPLATES文件添加os.path.join(BASE_DIR, 'templates'). 
    2. 除了使用pycharm创建django时指定一个APPlication, 不需要到settings.py中找到INSTLLED_APPS中注册app, 都需要去注册. 
    
    
# django小白三板斧
    from django.shortcuts import HttpResponse, render, redirect
    return HttpResponse(指定返回的字符串)  # 返回字符串  
    return render(request, 指定返回的html在templates中的文件名)  # 返回HTML文件 静态
    return render(request, 指定返回的html在templates中的文件名, {'user': user_list}) # 动态方式1
    return render(request, 指定返回的html在templates中的文件名, locals())   # 动态方式2
    return redirect('https://www.baidu.com')  # 重定向他人网址
    return redirect('/index')  # 重定向自己网址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值