zoukankan      html  css  js  c++  java
  • Django_xadmin_day_2

    1、settings.py中修改INSTALLED_APPS

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'apps.message',  #添加App名称
    ]

    2、在message/models.py中添加模型(数据库映射,模型以类表示,类为数据库的表,类的属性为表的列)

    from django.db import models
    
    # Create your models here.
    
    # 创建模型
    class UserMessage(models.Model):
        object_id = models.CharField(max_length=50, default='', primary_key=True, verbose_name=u"主键")
        name = models.CharField(max_length=20, null=True, blank=True, default="", verbose_name=u"用户名")
        email = models.EmailField(verbose_name=u"邮箱")
        address = models.CharField(max_length=100, verbose_name=u"联系地址")
        message = models.CharField(max_length=500, verbose_name=u'留言信息')
        """
        1、CharField必须设置max_length,不然报错
        2、default设置默认值
        3、primary_key设置主键
        4、verbose_name设置人读别名
        5、每个模型都是django.db.models.Model 的一个Python 子类
        6、模型的每个属性都表示为数据库中的一个字段
        """
        class Meta:
            verbose_name = u"用户留言信息"
            verbose_name_plural = verbose_name
            """
            verbose_name:单数
            verbose_name_plural:复数
            verbose_name_plural = verbose_name:作用为设单数
            """

     3、Tools工具栏下 运行run manage.py Task,分别输入

    makemigrations  message
    migrate message

     数据库中生成:message_usermessage表

    4、测试:apps/message/views.py文件中可以取出或者写入数据库数据

    from django.shortcuts import render
    from apps.message.models import UserMessage  #倒入模型类
    # Create your views here.
    
    def getform(request):
    
        all_me = UserMessage.objects.all()
        all_me.delete()  #删除数据库中的全部数据
    
        for me in all_me:
            me.delete()  #删除数据库中的一条数据
    
        # 取数据库中的数据
        all_messages = UserMessage.objects.all()  # 取所有数据 all_messages为QuerySet类型
        for message in all_messages:
            print(message)
    
        # 向数据库中写数据
        user = UserMessage()
        user.name = 'huang'
        user.message = 'world'
        user.email = '2@2.com'
        user.address = 'changsha'
        user.object_id = 3
        user.save()  # 保存
    return render(request, 'message_form.html')

    5、用户填写表单,程序向数据库传数据

    打开templates/message_form.html文件,根据urls.py文件中配置的url

    修改message_form.html文件,给action添加/form/属性:

    <form action="/form/" method="post" class="smart-green">  #/form/根目录下的form

    重新运行程序提前表单出现以下错误,这是Django的一种安全机制,不能随便提交表单:

    解决上面错误要在message_form.html文件中添加:{%csrf_token%},重新运行提交就解决了。

    通过表单向数据库提交数据

    from django.shortcuts import render
    from apps.message.models import UserMessage  #倒入模型类
    # Create your views here.
    
    def getform(request):
        # 提交表单是POST请求
        # get中的参数要与html文件表单中的name属性完全相同
        if request.method == 'POST':   
            name = request.POST.get('name', '')      
            message = request.POST.get('message', '')
            address = request.POST.get('address', '')
            email = request.POST.get('email', '')
            user = UserMessage()
            user.name = name
            user.address = address
            user.email = email
            user.message = message
            user.object_id = '5'
            user.save()  #保存
        return render(request, 'message_form.html')

     从数据库中取数据写入表单与配置url

    #apps/message/views.py文件
    from django.shortcuts import render
    from apps.message.models import UserMessage  #倒入模型类
    # Create your views here.
    
    def getform(request):
        all_message = UserMessage.objects.filter(name='char') #取name=char的数据
        message = all_message[0]
        return render(request, 'message_form.html', {'my_message': message})  #{'my_message': message}传数据给html
    #html文件
    <form action="/form/" method="post" class="smart-green">
        <h1>留言信息
            <span>请留下你的信息.</span>
        </h1>
        <label>
            <span>姓名 :</span>
            <input id="name" type="text" value="{{ my_message.name }}" name="name" class="error" placeholder="请输入您的姓名"/>
            <div class="error-msg"></div>
        </label>
        <label>
            <span>邮箱 :</span>
            <input id="email" type="email" value="{{ my_message.email }}" name="email" placeholder="请输入邮箱地址"/>
            <div class="error-msg"></div>
        </label>
        <label>
            <span>联系地址 :</span>
            <input id="address" type="text" value="{{ my_message.address }}" name="address" placeholder="请输入联系地址"/>
            <div class="error-msg"></div>
        </label>
        <label>
            <span>留言 :</span>
            <textarea id="message" name="message"  placeholder="请输入你的建议">{{ my_message.message }}</textarea>
            <div class="error-msg"></div>
        </label>
    
    #input用value={{xxx.xxx}}写入值
    #textarea 写在标签中间{{xxx.xxx}}
    from django.conf.urls import url
    from django.contrib import admin
    from apps.message.views import getform  #倒入配置的views页面函数
    # 修改前端显示url
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^form/$', getform, name='go_form')   #给url配置别名,好入是修改r'^form/$',html也不会改,通用性更强
    ]

    再修改html文件

    <form action="{% url 'go_form'%}" method="post" class="smart-green">   
    
    #把action="/form/"改为 action="{% url 'go_form'%}",通用性更强
  • 相关阅读:
    vsc连接wsl时node进程占用cpu高
    LifeCycles属性
    让kbmMWClientQuery更新视图
    uniGUI免登录的实现
    uniGUI 快速定制手机端输入界面布局
    更新IDE的背景
    Delphi 10.4.1来了
    如何修改windows服务器最大的tcp连接数
    uniGUI怎么升级jquery
    【转】UniGUI的布局使用说明
  • 原文地址:https://www.cnblogs.com/jp-mao/p/7065547.html
Copyright © 2011-2022 走看看