python django入门

Django框架安装及快速入门

安装django 2.2.X 的最新版本

pip install django==2.2.* -i https://mirrors.aliyun.com/pypi/simple/

查看当前是否安装Django及版本

python -m django --version

创建Django项目

django-admin startproject myweb

启动Django项目

python manage.py runserver

ip地址访问项目

http://X.X.X.X:8080/

远程访问错误解决方法

DisallowedHost at /

Invalid HTTP_HOST header: '192.168.0.108'. You may need to add '192.168.0.108' to ALLOWED_HOSTS.

HTTP——HOST标头无效:'192.168.*.*:8000'。你需要将'192.168.*.*:8000'添加到ALLOWED_HOSTS


--修改配置文件-settings.py
1、
ALLOWED_HOSTS = ["192.168.0.108"]

2、
ALLOWED_HOSTS = ["192.168.0.108","localhost","127.0.0.1"]

3、
ALLOWED_HOSTS = ["*"] # 支持所有

创建一个应用程序

python manage.py startapp myapp

编写第一个视图

1.myapp--> views.py

from django.http import HttpResponse

# Create your views here.
def index(request):
    return HttpResponse("Hello World!")

2.myapp目录创建urls.py 文件

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

3.修改主路由,myweb目录的 urls.py

"""myweb URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.2/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path("myapp/", include('myapp.urls'))
]

4.启动项目

python django入门_第1张图片

 5.访问myapp

python django入门_第2张图片

路由的顺序

1.添加myapp至myweb的主路由urls.py 添加路由

python django入门_第3张图片

2. 启动项目后,根路径为,ROOT_URLCONF为myweb.urls

python django入门_第4张图片

3.添加视图代码

python django入门_第5张图片

4. myapp目录下 urls.py 添加路由地址

python django入门_第6张图片

 5.访问路径http://192.168.0.109:8080/myapp/add

python django入门_第7张图片

Django项目模型

python django入门_第8张图片

pip install mysqlclient -i https://mirrors.aliyun.com/pypi/simple/

 
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient

python django入门_第9张图片

 pip install mysqlclient-1.4.6-cp37-cp37m-win32.whl

创建模型

from django.db import models

class Stu(models.Model):

    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=16)
    age = models.SmallIntegerField()
    sex = models.CharField(max_length=1)
    classid = models.CharField(max_length=8)

    def __str__(self):
        return "%d:%s:%d:%s:%s"%(self.id,self.name,self.age,self.sex,self.classid)

    class Meta:
        db_table="stu"

激活模型

mysql建表

--创建mydemo数据库
create database mydemo

--使用mydemo数据库
use mydemo

--查看当前数据库
select database();

--建表 stu
CREATE TABLE if not EXISTS `stu` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
	`name` varchar(16) NOT NULL,
  `age` tinyint(3) NOT NULL,
  `sex` char(1) NOT NULL,
  `classid` char(8),
	 PRIMARY KEY (`id`)
);

--查看所有表
show tables
--查看stu表数据
select *from stu
--删除stu表
drop table stu
--删除stu表所有数据
DELETE FROM stu

--插入数据
INSERT into stu
(id,name,age,sex,classid)
VALUES
('1','小明','14','男','001'),
('2','小红','13','女','001'),
('3','小强','11','男','002'),
('4','小伟','15','男','002'),
('5','小丽','14','女','003'),
('6','小美','13','女','003'),
('7','小红','12','女','004'),
('8','小军','16','男','004')

连接mysql数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydemo',
        'USER': 'root',
        'PASSWORD': '12345687',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

python django入门_第10张图片

python django入门_第11张图片

视图获取数据

myapp-->views.py

from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import Stu

# Create your views here.
def index(request):
    return HttpResponse("Hello World!")

def add(request):
    lists = Stu.objects.all() # 获取数据库stu表的所有数据
    for stu in lists:
        print(stu)

    print(Stu.objects.get(id=6)) # 获取其中一条数据
    return HttpResponse("bye")

python django入门_第12张图片

Django启用admin管理

数据迁移

 python manage.py migrate

python django入门_第13张图片

 创建超级用户

python manage.py createsuperuser

python django入门_第14张图片

ps:邮箱可以不填,输入密码是不显示的(建议8位)

python django入门_第15张图片

修改时区及地区(英文切换为中文)

myweb-->settings.py

# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = True

python django入门_第16张图片

python django入门_第17张图片

 添加用户

python django入门_第18张图片

python django入门_第19张图片

添加mysql数据库的Stu表的学生信息

myapp-->admin.py

from django.contrib import admin

# Register your models here.
from myapp.models import Stu

admin.site.register(Stu)

 python django入门_第20张图片

python django入门_第21张图片

对Stu 表添加新的学生信息

python django入门_第22张图片

 python django入门_第23张图片

 修改Stu 的显示信息样式

myapp-->models.py

from django.db import models

class Stu(models.Model):
    '''自定义Stu表对应的Model类'''
    # 定义属性:默认主键自增id字段可不写
    id = models.AutoField("学号",primary_key=True)
    name = models.CharField("姓名",max_length=16)
    age = models.SmallIntegerField("年龄")
    sex = models.CharField("性别",max_length=1)
    classid = models.CharField("班级",max_length=8)

    def __str__(self):
        return "%d:%s:%d:%s:%s"%(self.id,self.name,self.age,self.sex,self.classid)

    class Meta:
        db_table="stu"
        verbose_name = '浏览学生信息'
        verbose_name_plural = '学生信息管理'

python django入门_第24张图片

python django入门_第25张图片

python django入门_第26张图片

 myapp-->admin

from django.contrib import admin

# Register your models here.
from myapp.models import Stu

# stu模型的管理器(装饰器写法)
@admin.register(Stu)
class StuAdmin(admin.ModelAdmin):
    # listdisplay 设置要显示在列表中的字段(id字段是Django模型的默认主键)
    list_display = ('id','name','age','sex','classid')

    # 设置哪些字段可以点击进入编辑界面
    list_display_links = ('id','name')

    # list_per_page设置每页显示多少条记录,默认是100条
    list_per_page = 10

    #orderring设置默认排序字段,负号表示降序排序
    ordering = ('id',) # -id降序

    #list_editable 设置默认可编辑字段
    #list_editable = ['age','sex','classid']

python django入门_第27张图片

你可能感兴趣的:(#,django,django,python)