已有184人关注
完全按照书本例子搭建django框架,运行http://127.0.0.1:8000/app1/get_name,报500错
发表在Python图书答疑 2020-01-03 悬赏:2 学分 《Python从入门到项目实践》第23章 Django Web框架的使用 372页-374页
是否精华
版块置顶:

完全按照书本例子搭建django框架,运行http://127.0.0.1:8000/app1/get_name,报500错。

372页-374页所有代码(都是copy示例源码),这个

(env) D:\MyCode\Test\xxx>python manage.py runserver

Performing system checks...


System check identified no issues (0 silenced).

January 03, 2020 - 15:29:50

Django version 3.0.1, using settings 'xxx.settings'

Starting development server at http://127.0.0.1:8000/

Quit the server with CTRL-BREAK.

GET

[03/Jan/2020 15:30:21] "GET /app1/get_name HTTP/1.1" 500 145

[03/Jan/2020 15:30:21] "GET /favicon.ico HTTP/1.1" 404 179

找了百度,找不到合理解释,请专家答疑解惑,谢谢。


分享到:
精彩评论 6
老猫忽忽_1574128646
学分:9 LV1
2020-01-03
沙发

另书本中 介绍:在html文件中使用返回的表单的代码:


<form action="/app1/get_name" method="post"> {% csrf_token %}

    {{ form }}

    <button type="submit">提交</button>

</form>


我是用pycharm新建了一个name.html,然后将以上代码写上去的,有问题吗?


老猫忽忽_1574128646
学分:9 LV1
2020-01-03
板凳

如果觉得哪里介绍不充分,请指出,我也不知道该贴什么上来,源码都是示例源码,没做改动,贴上来也意义不大,不过请专家看到后给我一点意见或明确还需要提供什么内容。谢谢

老猫忽忽_1574128646
学分:9 LV1
2020-01-03
地板

书本上没有介绍如何创建name.html,对于一个小白来说就不知道该如何继续了

mrkj_1571226094
学分:33 LV2
2020-01-04
4L
还要看urls文件和视图文件views才知道
老猫忽忽_1574128646
学分:9 LV1
2020-01-06
5L

URL文件

from app1 import views as app1_views

from django.urls import path

from django.contrib import admin

from django.conf.urls import url,include

from django.conf.urls.static import static

from django.conf import settings


urlpatterns = [

    # 精确匹配视图

    path('get_name',app1_views.get_name),

    path('get_name1', app1_views.PersonFormView.as_view()),

    path('current_datetime',app1_views.current_datetime),

    path('p_detail/<int:pk>/',app1_views.person_detail),

    #path('articles/2003/', app1_views.special_case_2003),

    # 匹配一个整数

    #path('articles/<int:year>/', app1_views.year_archive),

    # 匹配两个位置的整数

    #path('articles/<int:year>/<int:month>/', app1_views.month_archive),

    # 匹配两个位置的整数和一个slug类型的字符串

    #path('articles/<int:year>/<int:month>/<slug:slug>/', app1_views.article_detail),


]


老猫忽忽_1574128646
学分:9 LV1
2020-01-06
6L

from django.shortcuts import render


# Create your views here.



import datetime  # 导入时间模块


from django.shortcuts import render

from django.http import HttpResponse, HttpResponseRedirect, Http404

from django.views import View

from app1.forms import PersonForm

from app1.models import MyPerson


def person_detail(request, pk):  # url参数pk

    try:

        p = MyPerson.objects.get(pk=pk)  # 获取Person数据

    except MyPerson.DoesNotExist:

        raise Http404('Person Does Not Exist')  # 获取不到抛出Http404错误页面

    return render(request, 'person_detail.html', {'Myperson': p})  # 返回详细信息视图



class PersonFormView(View):

    form_class = PersonForm  # 定义表单类

    initial = {'key': 'value'}  # 定义表单初始化展示参数

    template_name = 'name.html'  # 定义渲染的模板


    def get(self, request, *args, **kwargs):  # 定义GET请求的方法

        # 渲染表单

        return render(request, self.template_name,

                          {'form': self.form_class(initial=self.initial)})


    def post(self, request, *args, **kwargs):  # 定义POST请求的方法

        form = self.form_class(request.POST)  # 填充表单实例

        if form.is_valid():  # 判断请求是否有效

            # 使用form.cleaned_data获取请求的数据

            first_name = form.cleaned_data['first_name']

            last_name = form.cleaned_data['last_name']

            # 响应拼接后的字符串

            return HttpResponse(first_name + '' + last_name)  # 返回拼接的字符串

        return render(request, self.template_name, {'form': form})  # 如果表单无效,返回表单




def current_datetime(request):  # 定义一个视图方法,必须带有请求对象作为参数

    now = datetime.datetime.now()  # 请求的时间

    html = "<html><body>It is now %s.</body></html>" % now  # 生成html代码

    return HttpResponse(html)  # 将响应对象返回,数据为生成的html代码



def get_name(request):

    # 判断请求方法是否为POST

    print(request.method)

    if request.method == 'POST':

        # 将请求数据填充到PersonForm实例中

        form = PersonForm(request.POST)

        # 判断form是否为有效表单

        if form.is_valid():

            # 使用form.cleaned_data获取请求的数据

            first_name = form.cleaned_data['first_name']

            last_name = form.cleaned_data['last_name']

            # 响应拼接后的字符串

            return HttpResponse(first_name + '' + last_name)

        else:

            return HttpResponseRedirect('/error/')

    # 请求为GET方法

    else:

        return render(request, 'name.html', {'form': PersonForm()})


首页上一页 1 下一页尾页 6 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照