Django操作与内容

Posted wangwei5979

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django操作与内容相关的知识,希望对你有一定的参考价值。

一、路由系统

1.如何实现伪静态

在cnblogs中:https://www.cnblogs.com/wangwei5979/p/11160708.html
而我们自己写的:
http://127.0.0.1:8000/up_studnet/?id=12

同样是网页 为何cnblogs这样设计
原因:
1就是因为比较美观
2由于使用搜索引擎来搜索我们所需要的内容使,第一种的方式更容易被各个搜索引擎所收录,被搜索
到的概率就高,我们自己写的会被搜索引擎认知为动态网页,而第一个方式就是伪静态。 例题: http://127.0.0.1:8000/up_studnet/?id=12 http://127.0.0.1:8000/up_studnet/12/ 如何实现: 在urls.py里,在url中添加这样的正则匹配, [url(r‘^index/(\\w+)/(\\w+)/‘, index), url(r‘^test/(?P<id>\\w+)/(?P<name>\\w+)/‘, test),] def test(request, name, id): print(id , name) return HttpResponse(‘test‘) 此时就不需要用?id=某个值来进行传值,避免了使用?来操作

  

2.路由正则与反向路由

在url里
url(r‘^test2/‘, test2)
在html中会匹配以test2/开头的所有接下来的网页

可以url(r‘^test2/$‘, test2)
只能匹配/test2/的网页了

还可以自己定义404:
url(r‘^‘, notfound)  需要写到最下面

在定义了这个统配之后,所有在url没有的  都会走这个自定义的404了


反向路由:
后台url:
url(r‘^logindjsajdbjsabdsabdbsabdhsabdhbsahbdsaasa/$‘, login, name=‘xxx‘)

前台:	
<form action="% url ‘xxx‘ %">
	<input type="text">
</form>

  

3.路由分组

有许多相同的方法可以写在一个py文件里,django也有这个方法,可以通过创建app来完成,
在创建django时只可以带着创建一个app文件。 django创建app: python3 manage.py startapp 自定义app名称 路由分组 总urls.py; url(r‘^app02/‘, include(‘app02.urls‘)), url(r‘^app03/‘, include(‘app03.urls‘)), 分app下的 urls.py: from app03 import views urlpatterns = [ url(r‘^students/‘, views.studnets) ] 然后在app下的views.py里写方法

  

二、函数视图

FBV:
function based view

CBV:
class based view

urls.py:
url(r‘^login/‘, views.Login.as_view()),
				
views.py:
from django.views import View

class Login(View):

def get(self, request):

return render(request, "login.html")

def post(self, request):
uname  = request.POST.get(‘username‘)

print(uname)
return HttpResponse(‘ok‘)


原理:
‘get‘: 请求数据
‘post‘:提交数据
‘delete‘: 删除数据
‘put‘: 更新数据
‘patch‘: 更新部分数据
		
ps:
form表单提交 只支持get、post  

ajax支持
					
核心:
 def dispatch(self, request, *args, **kwargs):
	super(Login, self).dispatch(request, *args, **kwargs)
可以创建dispatch方法来做数据的限制			

  

三、Django的ORM

Django的ORM,跟sqlalchemy一样都是操作mysql数据库的。
在Django的ORM中,
orm配置:
a.创建数据库
create database 数据库名

b.配置mysql数据库的链接:
DATABASES = 
	# ‘default‘: 
	#     ‘ENGINE‘: ‘django.db.backends.sqlite3‘,
	#     ‘NAME‘: os.path.join(BASE_DIR, ‘db.sqlite3‘),
	# 
	‘default‘: 
		‘ENGINE‘: ‘django.db.backends.mysql‘,
		‘NAME‘: ‘xxx‘,    ## 数据库名称
		‘USER‘: ‘xxx‘,## 数据库用户名称
		‘PASSWORD‘: ‘xxx‘,    ## 安装 mysql 数
据库时,输入的xxx 用户的密码 ‘HOST‘: ‘127.0.0.1‘, c. 注册app: INSTALLED_APPS = [ ‘django.contrib.admin‘, ‘django.contrib.auth‘, ‘django.contrib.contenttypes‘, ‘django.contrib.sessions‘, ‘django.contrib.messages‘, ‘django.contrib.staticfiles‘, ‘app02‘, ‘app03‘ ] d. 需要将mysqldb换成pymysql python3: pymysql python2: MySQLdb 在总的的 __init__.py文件里 import pymysql pymysql.install_as_MySQLdb() e:创建表 命令: 在app文件的models里,可以创建如下表: class Classes(models.Model): cid=models.AutoField(primary_key=True) cname = models.CharField(max_length=32, null=True) 然后再Terminal里 python manage.py makemigrations python manage.py migrate

  

 

以上是关于Django操作与内容的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中列出所有与表单相关的错误?

如何在不定义内容类型或模型的情况下使用 Django 权限?

django功能七

django功能七

django从零开始models与数据库

django功能九