day01

Django基础命令

命令行操作 cmd
	1.创建Django项目
    	1.1.先切换到指定目录,切换到D盘
        	d:
		1.2.创建Django项目
        	'''django-admin startproject 项目名称'''
        	django-admin startproject mysite01
	2.启动Django项目
    	2.1.先切换到项目目录下
        	cd mysite01
		2.2.执行启动目录
        	python3 manage.py runserver ip:port(不写ip和端口,默认是 127.0.0.1:8000)
            ctrl+c 在cmd里停止
	3.访问Django服务端
    	浏览器直接输入 127.0.0.1:8000
	4.创建app应用
        """
        Django框架类似于是一个空壳子,给你提供所需的资源
        写功能需要通过创建app来划分
        """
		4.1.创建app
        	'''python3 manage.py startapp 应用名'''
            python3 manage.py startapp app01
            
pycharm操作
"""每个Django项目使用的端口不能冲突"""
	1.创建项目
        新建项目---Django---location: django_01(创建项目目录)
                           Templates folder:templates (保持默认,存储HTML的文件夹)
                           Application name: app01   (app应用,自定义名字)
                           Enable Django admin (默认勾选,自带的后台管理功能)
	2.直接右键运行
    	'''可能会遇到版本问题,有报错'''
        例如:
            File "D:\django_01\django_01\settings.py", line 58, in <module>
    		'DIRS': [BASE_DIR / 'templates']
             		~~~~~~~~~^~~~~~~~~~~~~
			TypeError: unsupported operand type(s) for /: 'str' and 'str'
		一般都是python与Django的版本之间不匹配,按提示,把/换成,
	3.修改端口号
    	点击绿色按钮旁边的django_01,编辑配置,修改端口
		再重新启动Django即可

命令行与pycharm区别

1.命令行cmd不会自动创建templates文件夹
2.命令行不会在配置文件编写关于templates文件夹的配置
    """文件是项目名下的settings.py文件"""
    pycahrm创建的DIRS里是有内容的,cmd创建的是空的,需要自己配置
    """但是DIRS都需要重新改下,如下所示"""
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 'DIRS': [BASE_DIR, 'templates'],
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        '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应用,需要手动添加注册;pycharm创建的app应用会自动添加
	"""还是settings文件"""
添加'app01.apps.App01Config',  或者简写app01
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',
]

4.db.sqlie3不需要管他,只要运行,就会自动创建

Django目录结构

Django项目目录
	项目同名文件夹
    	__init__.py	很少用,冷门配置
        settings.py	项目配置,变量名纯大写
        urls.py	对应关系(网址后缀跟函数名)
        wsgi.py Django服务,基本不用
	manage.py	Django入口文件,启动文件
    templates文件夹	存储项目所需的HTML文件
    应用名文件夹(可以有多个)
    	migrations文件夹	orm相关(和数据库打交道的记录)
        __init__.py 很少用,冷门配置
        admin.py	Django自带的后台管理
        apps.py	创建应用之后,用于应用的注册
        models.py	存储与数据库表相关的类
        tests.py	自带的测试文件
        views.py	存储业务相关的逻辑代码(函数,类)
	db.sqlite3	自带的小型数据库
    
"""接下里是重要的介绍"""
urls.py		路由层
views.py	视图层
templates	模板层
models.py	模型层

入门三件套

"""
HttpResponse
	主要用于直接返回字符串的数据
render
	主要用于返回HTML页面,并且支持模板语法
redirect
	主要用于页面重定向
"""
    
案例:
    
'''urls.py''' 之后习惯称之为 路由层
from django.contrib import admin
from django.urls import path
from app01 import views	# 添加app01的views模块
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index), # 演示HttpResponse
    path('func/', views.func),	# 演示render
    path('login/', views.login),	# 演示redirect
]
################################################################################
'''views.py'''之后习惯称之为 视图层
from django.shortcuts import render, HttpResponse, redirect # 导入对应模块


# Create your views here.
def index(request):
    return HttpResponse('你好啊,我是Django2.2.22版本')

def func(request):
    user_dict = {
        'name': 'jason',
        'pwd': 123,
    }
    # 这里的func.html文件创建在templates文件夹里,因为创建项目时设置了'DIRS': [os.path.join(BASE_DIR, 'templates')],所以这里能直接找到func.html文件
    return render(request, 'func.html', {'data': user_dict})

def login(request):
    return redirect('https://www.baidu.com')
################################################################################
'''templates目录下创建func.html文件''' 之后习惯称之为 模板层
Django可以使用类似jinja2模板的功能,下面的data
在body里添加
    <h1>哈哈哈,我是func</h1>
    <h1>{{ data }}</h1>
    <h1>{{ data.name }}</h1>
    <h1>{{ data.pwd }}</h1>
################################################################################
浏览器输入 127.0.0.1:8000/index
		127.0.0.1:8000/func
		127.0.0.1:8000/login
posted @ 2023-05-09 09:08  也曾滿眼愛意丶  阅读(31)  评论(0)    收藏  举报