Django项目创建两种方式
方式一(命令行)
(1)创建django项目
django-admin startproject 项目名
(2)创建app应用
python3 manage.py startapp app01
(3)启动django项目
python3 manage.py runserver
ps:用命令行创建django默认不会自动创建templates文件夹
需要你手动自己创建(注意改文件夹路径是否被添加配置文件中)
方式二(pycharm)
FILE >>> new project 选择第二个django 需要注意名字不能有中文,选择本地的解释器,勾选后台管理
创建app
(1)pycharm命令行创建
(2)python3 manage.py startapp app01
(3)Tools下面run manage task功能栏
(4)启动点小绿色箭头
强调:
1.用django一定要保证只有一个在运行状态 切记切记!!!!!!!
2.一定记得清浏览器的缓存
模板
模板
layout.html
a.css:
{% block mycss%}
{% endblock %}
b.content:
{% block mycontent%}
{% endblock %}
c. js:
{% block myjs%}
{% endblock %}
子板
{%extends "layout.html" %}
{% block mycss%}
xxxxxxx
xxxxxxx
{% endblock %}
{% block mycontent%}
dbsajbdjsa
{% endblock %}
django cookie
a. cookie是存在 客户端的
b. cookie用来验证用户登录验证的信息的
c. cookie是可以被禁用掉
set_cookie():
key: cookie的key
value: cookie的 key对应的值
max_age: cookie的失效时间
expires: 失效时间
path : cookie在哪个路径下生效
domain:域名
httponly
补:
set_signed_cookie(key, val, salt)
分别对应K,V,加盐
路由系统
1、伪静态
将很长的网站域名转换位简单有规则的域名
2、目的
a.为了美观
b.为了优化搜索引擎优化技术,使得网站更容易被搜索到
3、如何实现
通过路由分发技术,然后再url的方法映射的地方通过正则匹配,同时再方法中可在通过多个传参接收多个参数来接收除request以外的参数,具体方法见下:
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')
4、路由正则与未匹配到(404)
url(r'^test2/$', test2)
url(r'^', notfound) 需要写到最下面
5、反向路由
后台url:
url(r'^logindjsajdbjsabdsabdbsabdhsabdhbsahbdsaasa/$', login, name='xxx')
前台:
分appurls.py:
from app03 import views
urlpatterns = [
url(r'^students/', views.studnets)
]
###函数视图
####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)
###ORM配置
####a.创建数据库
####b.配置mysql数据库的链接:
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 's8day61', ## 数据库名称
'USER': 'root',
'PASSWORD': '123', ## 安装 mysql 数据库时,输入的 root 用户的密码
'HOST': '127.0.0.1',
}
}
####d. 需要将mysqldb换成pymysql
python3:
pymysql
python2:
MySQLdb
app下的 __init__.py文件
import pymysql
pymysql.install_as_MySQLdb()
####e:创建表 命令:
python3 manage.py makemigrations
python3 manage.py migrate