鱼C论坛

 找回密码
 立即注册
查看: 2368|回复: 4

[已解决]请教各位大神,为什么我用Django做的网页打开是源代码,而不是网页?谢谢!

[复制链接]
发表于 2022-11-9 23:09:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 kingnok 于 2022-11-9 23:13 编辑

问题描述:学习用django,但是在学习的过程中出现一个问题,就是从一个网页跳到另外一个网页(从get_students.html跳转到edit,不显示网页界面,显示的是网页的代码。而且中文部分还是乱码,请大神指导一下,谢谢了~~,代码如下



URLS.py代码:

"""django_demo2 URL Configuration


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
from app01.views import classes
from app01.views import teachers
from app01.views import students
urlpatterns = [
    path('admin/', admin.site.urls),
    path('classes.html',classes.get_classes),
    path('add_classes.html',classes.add_classes),
    path('del_classes.html',classes.del_classes),
    path('edit_classes.html',classes.edit_classes),
    path('students.html',students.get_students),
    path('add_students.html',students.add_students),
    path('del_students.html',students.del_students),
    path('edit_students.html',students.edit_students),
]

就是这段代码不现实网页
edit_students.html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>学生修改</title>
</head>
<body>

    <form action="edit_students.html?nid={{ obj.id }}" method="POST">
        {% csrf_token %}
        <p><input type="text" name="nid" value="{{ obj.id }}" style="display:none"></p>
        <p><input type="text" name="username" value="{{ obj.username }}"></p>
        <p><input type="text" name="age" value="{{ obj.age }}"></p>
        <p>
            {% if obj.gender %}
                男:<input type="radio" name="gender" checked="checked" value="1">
                女:<input type="radio" name="gender" value="0">
            {% elif obj.gender %}
                男:<input type="radio" name="gender" value="0">
                女:<input type="radio" name="gender" checked="checked" value="1">
            {% endif %}
        </p>
        <P>
            <select name="class_id">
                {% for row in cs_list %}
                    {% if row.id == obj.cs_id %}
                      <option value="{{ row.id }}" selected="selected">{{ row.title }}</option>
                    {% else %}
                      <option value="row.id">{{ row.title }}</option>
                    {% endif %}
                {% endfor %}
            </select>
        </P>
    <input type="submit" value="提交">
    </form>
</body>
</html>

get_students.html代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>
        <a href="/add_students.html">添加</a>
    </div>
    <div>
        <table border="1">
            <thead>
            <tr>
                <th>ID</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>性别</th>
                <th>班级</th>
                <th>操作</th>
            </tr>
            </thead>
            <tbody>
              {% for row in stu_list %}
                  <tr>
                     <td>
                         {{ row.id }}
                     </td>
                     <td>
                         {{ row.username }}
                     </td>
                     <td>
                         {{ row.age }}
                     </td>
                      <td>
                         {{ row.gender }}
                     </td>
                      <td>
                         {{ row.cs.title }}
                     </td>
                     <td>
                         <a href="del_students.html?nid={{ row.id }}">删除</a>
                         <a href="edit_students.html?nid={{ row.id }}">编辑</a>
                     </td>
                  </tr>
              {% endfor %}
            </tbody>
        </table>
    </div>
</body>
</html>


from django.db import models

models.py代码:
# Create your models here.
class Classes(models.Model):
    '''
    班级表
    '''
    title = models.CharField(max_length=32)
    m = models.ManyToManyField('Teachers')


class Teachers(models.Model):
    '''
    老师表
    '''
    name=models.CharField(max_length=32)

class C2T(models.Model):
    '''
    班级-教师对应表
    '''
    cid=models.ForeignKey(Classes, on_delete=models.CASCADE)
    tid=models.ForeignKey(Teachers, on_delete=models.CASCADE)

class Student(models.Model):
    username=models.CharField(max_length=32)
    age= models.IntegerField()
    gender=models.BooleanField()
    cs= models.ForeignKey(Classes,on_delete=models.CASCADE)

students.py代码:
from django.shortcuts import render
from django.shortcuts import redirect
from app01 import models

def get_students(request):
    stu_list=models.Student.objects.all()
    for row in stu_list:
        print(row.id,row.username,row.cs.title,row.cs.id,)
    return render(request,'get_students.html',{'stu_list':stu_list})

def add_students(request):
    if request.method=="GET":
        cs_list = models.Classes.objects.all()
        return render(request,'add_students.html',{'cs_list':cs_list})
    elif request.method=="POST":
        u = request.POST.get("username")
        a = request.POST.get("age")
        g = request.POST.get("gender")
        c = request.POST.get("cs")

        models.Student.objects.create(username=u,age=a,gender=g,cs_id=c)
        return redirect('students.html')

def del_students(request):
    nid = request.GET.get('nid')
    models.Student.objects.filter(id=nid).delete()
    return redirect('students.html')

def edit_students(request):

    nid = request.GET.get('nid')
    obj = models.Student.objects.filter(id=nid).first()
    print(obj.id)
    cs_list = models.Classes.objects.all()
    return render(request, 'edit_students.html', {'obj':obj}, {'cs_list':cs_list})
最佳答案
2022-11-10 01:03:21
def edit_students(request):
    nid = request.GET.get('nid')
    obj = models.Student.objects.filter(id=nid).first()
    print(obj.id)
    cs_list = models.Classes.objects.all()
    # return render(request, 'edit_students.html', {'obj':obj}, {'cs_list':cs_list})  
    # 写成这样,导致render的content_type参数接收到了一个字典,而不是默认的正确的 'text/html' MIME文档类型,从而导致 网页渲染失败(类型不对,不认识!)
    # 修改为:
    return render(request, 'edit_students.html', context={'obj':obj, 'cs_list':cs_list})   

本帖被以下淘专辑推荐:

  • · django|主题: 61, 订阅: 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-10 00:34:52 | 显示全部楼层
本帖最后由 suchocolate 于 2022-11-10 00:47 编辑

redirect里写path 或url,不写文件。
我觉得你需要换个教程。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-10 01:03:21 | 显示全部楼层    本楼为最佳答案   
def edit_students(request):
    nid = request.GET.get('nid')
    obj = models.Student.objects.filter(id=nid).first()
    print(obj.id)
    cs_list = models.Classes.objects.all()
    # return render(request, 'edit_students.html', {'obj':obj}, {'cs_list':cs_list})  
    # 写成这样,导致render的content_type参数接收到了一个字典,而不是默认的正确的 'text/html' MIME文档类型,从而导致 网页渲染失败(类型不对,不认识!)
    # 修改为:
    return render(request, 'edit_students.html', context={'obj':obj, 'cs_list':cs_list})   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-10 01:09:21 | 显示全部楼层

可以正常运行了,非常感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-10 01:10:42 | 显示全部楼层
suchocolate 发表于 2022-11-10 00:34
redirect里写path 或url,不写文件。
我觉得你需要换个教程。

谢谢,这个教程看了一半了,这一小部分看完了就考虑换了,有时候确实有点讲的不清楚。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 12:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表