Django笔记(1)-创建运行一个简单的django项目步骤及注意事项

一、了解web框架

本质上就是一个socket,有两种常用的模式,MVC及MTV。

MVC

module view controller
数据库操作 模板文件 业务处理

MTV

module template view
数据库操作 模板文件 业务处理

Django就是一个基于MTV的web框架

二、Django初识

1、创建Django工程

切换到django目录下sbin,windows添加环境变量后可无需切换目录,mac无视直接敲命令就行
终端命令:

django-admin startproject [工程名称]

生成的文件夹对应的功能与作用

mysite
    -mysite         # 对整个程序进行配置
        - init      #
        - settings  # 配置文件
        - url       # url对应关系
        - wsgi      # 遵循wsgi规范,uwsgi+nginx
    -manage.py      # 管理Django
  							 #一些命令:
						- python manage.py  
                        - python manage.py startapp xx
                        - python manage.py makemigrations
                        - python manage.py migrate 

2、运行Django

python3 manage.py runserver 127.0.0.1:8001

3、django中的app

创建app,进入对应的工程目录下,执行命令

python manage.py startapp xx

app下的文件目录及作用

migrations    #是数据库结构操作的记录
admin           #django为我们提供的后台管理
apps          	 #配置当前app
models 		 #创建数据库表 ORM,写指定的类,通过命令可以创建数据库结构
tests 			 #单元测试
views   		 #业务逻辑代码

4、配置模板路径

在Django工程目录下的settings.py中

	TEMPLATES = [
	    {
	        'BACKEND': 'django.template.backends.django.DjangoTemplates',
	        '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',
	            ],
	        },
	    },

5、配置静态目录

在settings.py中配置静态目录

	STATIC_URL = '/static/'
	STATICFILES_DIRS = (
    	os.path.join(BASE_DIR,'static'),
	)

三、Django生命周期概述

各个客户端通过向服务器发送请求,由路由系统匹配URL,匹配成功后分发给对应的视图函数处理,从数据库中获取数据,并渲染给html,再返回给客户端。
Django笔记(1)-创建运行一个简单的django项目步骤及注意事项_第1张图片

四、注意事项

1、设置(注释csrf)

在settings.py的middlerware中注释csrf

	MIDDLEWARE = [
	    'django.middleware.security.SecurityMiddleware',
	    'django.contrib.sessions.middleware.SessionMiddleware',
	    'django.middleware.common.CommonMiddleware',
	    #'django.middleware.csrf.CsrfViewMiddleware',   #先注释掉
	    'django.contrib.auth.middleware.AuthenticationMiddleware',
	    'django.contrib.messages.middleware.MessageMiddleware',
	    'django.middleware.clickjacking.XFrameOptionsMiddleware',
	]

2、定义路由规则

在urls.py中定义路由规则,一个URL对应一个函数名

urlpatterns = [
    path('login/',views.login),
]

7、定义视图函数

在app下的views.py中编写视图函数

	def func(request):
		#request.method   POST/GET
		
		#request.GET.get(“”,None)
		#request.POST.get(“”,None)

		#return HttpResponse(“字符串”)
		#return render(request,”html file path”)
		#return redirect(“url”) #只能是url,如果要填本地的url,前面需要加/

8、模板渲染

通过视图函数将模板语言中变量、列表、字典等数据类型进行渲染,实现数据传递

  • {{变量名}}
		def func(request):
		return render(request,”index.html”,
					{“current_user”:”alex”})
index.html


	
		#将alex替换到该位置并生成字符串返回给用户
		
{{current_user}}
  • for 循环
def func(request):
		return render(request,”index.html”,{
					“current_user”:”alex”,
					“user_list”:[“yanzhuang”,”gu”],
					“user_dict”:{“k1”:”v1”,”k2”:”v2”}
					})
index.html


	
		#将alex替换到该位置并生成字符串返回给用户
		
{{current_user}}
    {% for row in user _list%}
  • {{row}}
  • {% endfor %}
{{user_list.1}} #取列表数据 {{user_dict.k1}} #取字典数据
  • if 条件
def func(request):
		return render(request,”index.html”,{
					“current_user”:”alex”,
					“age”:18
					“user_list”:[“yanzhuang”,”gu”],
					“user_dict”:{“k1”:”v1”,”k2”:”v2”}
					})
index.html


	
		#将alex替换到该位置并生成字符串返回给用户
		
{{current_user}}
    {% for row in user _list%}
  • {{row}}
  • {% endfor %}
{{user_list.1}} {{user_dict.k1}} #if-else条件语句嵌套 {% if age %} 有年龄 {% if age > 16 %} 老腊肉 {% else %} 小鲜肉 {% endif %} {% else %} 无年龄 {% endif %}

你可能感兴趣的:(Django)