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操作与内容的主要内容,如果未能解决你的问题,请参考以下文章