Django操作与内容
生活随笔
收集整理的這篇文章主要介紹了
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=12http://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 viewsurlpatterns = [url(r'^students/', views.studnets)] 然后在app下的views.py里寫方法
二、函數視圖
FBV: function based viewCBV: class based viewurls.py: url(r'^login/', views.Login.as_view()),views.py: from django.views import Viewclass 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:pymysqlpython2: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 makemigrationspython manage.py migrate
?
轉載于:https://www.cnblogs.com/wangwei5979/p/11191503.html
總結
以上是生活随笔為你收集整理的Django操作与内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 异步导致UI句柄增加的解决办法
- 下一篇: Emacs中的Color Theme以及