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

一、了解web框架

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

MVC

moduleviewcontroller
数据库操作模板文件业务处理

MTV

moduletemplateview
数据库操作模板文件业务处理

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,再返回给客户端。
在这里插入图片描述

四、注意事项

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

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

<html>
	<body>
		#将alex替换到该位置并生成字符串返回给用户
		<div>{{current_user}}</div> 

		<ul>
			{% for row in user _list%}
			<li>{{row}}</li>
			{% endfor %}
		</ul>
		<a>{{user_list.1}}</a> #取列表数据
		<a>{{user_dict.k1}}</a> #取字典数据
	</body>
</html>
  • 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

<html>
	<body>
		#将alex替换到该位置并生成字符串返回给用户
		<div>{{current_user}}</div> 
		<ul>
			{% for row in user _list%}
			<li>{{row}}</li>
			{% endfor %}
		</ul>
		<a>{{user_list.1}}</a>
		<a>{{user_dict.k1}}</a>
		#if-else条件语句嵌套
		{% if age %}
			<a>有年龄</a>
			{% if age > 16 %}
				<a>老腊肉</a>
			{% else %}
				<a>小鲜肉</a>
			{% endif %}
		{% else %}
			<a>无年龄</a>	
		{% endif %}
	</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值