Django创建并连接数据库(实现增删改查)--ORM框架雏形

第一步:要先创建数据库(orm是不能创建数据库的)

 

第二步:settings里面指定连接到哪个数据库

 

DATABASES = {
    #默认使用的是sqlite3数据库
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
    #指定使用Mysql数据库
    # 'default':{
    #     'ENGINE':'django.db.backends.mysql',
    #     'HOST':'127.0.0.1',
    #     'PORT':3306,
    #     'USER':'root',
    #     'PASSWORD':'root',
    #     'NAME':'userinfo',   #指定到那个数据库(数据库要事先建好)
    #
    # }
}

 

上面的NAME就是指定的数据库的名字

 

第三步:在app文件夹下面的init.py里面配置

#因为操作msq数据库默认是用Mysqldb,现在就是手动指定用pymsql来操作数据库:
import pymysql
pymysql.install_as_MySQLdb()

 

第四步:在models里定义类,类必须继承 models.Model,写属性,对应着数据库的字段

#指定数据库表都有哪些字段及字段的属性
from
django.db import models # Create your models here. class UserInfo(models.Model): nid = models.AutoField(primary_key=True) #是否设置为主键 name = models.CharField(max_length=32) # password = models.CharField(max_length=32,default='nicai') #可以指定默认值 password = models.CharField(max_length=32,) gender = models.IntegerField() birthday = models.DateField() def __str__(self): return self.name

 

第五步:迁移数据库(makemigrations是生成一个文件,migrate是将更改提交到数据量)

  方式一:

  执行 python manage.py makemigrations(相当于做一个记录)

  

  

 

  执行 pyhton manage.py migrate (把前面创建的表的字段执行到数据库中)

  

   

  对应settings里面添加的app自动会有相对应的数据表(创建好的表的名字=aap名字+models.py里面定义的class类的名字)

  

  

 

  方式一:通过pycharm软件点击

    

 

第六步:views.py拿网页数据并将录入到数据库指定表的字段里面

 

from django.shortcuts import render,HttpResponse

# Create your views here.

from app01.models import *

#通过网页注册,拿到用户的数据信息,完成注册
def register(request):
    if request.method == "POST":
        name=request.POST.get('name',None)
        password=request.POST.get('password',None)
        gender=request.POST.get('gender',None)
        birthday=request.POST.get('birthday',None)

        #实例化models.py里面的UserInfo类,传入上面从Web提交过来的数据,将数据写入数据库
        user=UserInfo.objects.create(birthday=birthday,name=name,password=password,gender=gender)
        print(user) #UserInfo object 是个对象
        print(user.__dict__) #{'_state': <django.db.models.base.ModelState object at 0x05482290>, 'nid': 4, 'name': 'b', 'password': 'b', 'gender': '5', 'birthday': '1992-03-28'}

        return HttpResponse('注册成功')

    return render(request,'register.html')

#查看表的内容
def user_list(request):
    user_list=UserInfo.objects.all()
    print(user_list)          #<QuerySet [<UserInfo: yangzhizong>, <UserInfo: 杨智宗>]>  QuerySet:即结果集
    print(type(user_list))    #<class 'django.db.models.query.QuerySet'>
    print(user_list[1].name)  #yangzhizong  可以依次取出输入的name值

    return render(request,'user_list.html',{'user_list':user_list})

 

第七步:更新表的时候就要执行下这2条命令:makemigrations 和 make (每次都会有记录,不能删除)

取出数据库中每条所有的用户的信息,相当于一个对象 列表对象里  放了一堆对象

 

 

 第八步:查询表时也可以一对一,多对多查询(待完善。。)

 

转载于:https://www.cnblogs.com/yangzhizong/p/9576543.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Python-Django网上投票系统代码,实现连接数据库增删改查等功能: 1. 创建Django项目和应用 首先,使用命令行创建一个新的Django项目: ``` django-admin startproject voting_system ``` 然后,在项目目录下创建一个新的应用: ``` cd voting_system python manage.py startapp polls ``` 2. 定义模型 在应用的models.py文件中定义数据模型: ```python from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0) ``` 这里定义了两个模型,Question和Choice。Question模型包含一个问题文本和发布日期,Choice模型包含一个选项文本、所属问题和投票数。 3. 数据库迁移 运行以下命令,创建表格: ``` python manage.py makemigrations python manage.py migrate ``` 4. 创建视图 在应用的views.py文件中定义视图函数,用于处理HTTP请求并返回响应: ```python from django.shortcuts import render, get_object_or_404 from django.http import HttpResponse, HttpResponseRedirect from django.urls import reverse from .models import Question, Choice def index(request): latest_question_list = Question.objects.order_by('-pub_date')[:5] context = {'latest_question_list': latest_question_list} return render(request, 'polls/index.html', context) def detail(request, question_id): question = get_object_or_404(Question, pk=question_id) return render(request, 'polls/detail.html', {'question': question}) def results(request, question_id): question = get_object_or_404(Question, pk=question_id) return render(request, 'polls/results.html', {'question': question}) def vote(request, question_id): question = get_object_or_404(Question, pk=question_id) try: selected_choice = question.choice_set.get(pk=request.POST['choice']) except (KeyError, Choice.DoesNotExist): return render(request, 'polls/detail.html', { 'question': question, 'error_message': "You didn't select a choice.", }) else: selected_choice.votes += 1 selected_choice.save() return HttpResponseRedirect(reverse('polls:results', args=(question.id,))) ``` 这里定义了四个视图函数:index、detail、results和vote。index函数返回最新的5个问题列表,detail函数返回指定问题的详细信息,results函数返回指定问题的投票结果,vote函数处理投票请求并返回结果。 5. 创建模板 在应用的templates目录下创建HTML模板,用于渲染视图函数返回的数据。 6. 配置URL 在应用的urls.py文件中配置URL模式,将不同的URL请求映射到对应的视图函数。 ```python from django.urls import path from . import views app_name = 'polls' urlpatterns = [ path('', views.index, name='index'), path('<int:question_id>/', views.detail, name='detail'), path('<int:question_id>/results/', views.results, name='results'), path('<int:question_id>/vote/', views.vote, name='vote'), ] ``` 这里定义了四个URL模式,将空路径、问题详情、投票结果和投票请求映射到对应的视图函数。 7. 运行测试服务器 最后,运行以下命令启动测试服务器: ``` python manage.py runserver ``` 然后在浏览器中访问http://localhost:8000/polls/即可查看投票系统的首页。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值