Code Monkey home page Code Monkey logo

django-practice-book's People

Contributors

the5fire avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

django-practice-book's Issues

第10章 221页 启动程序报错

安装xadmin插件失败,完成到221页,启动程序报如下错:
Traceback (most recent call last):
File "manage.py", line 26, in
execute_from_command_line(sys.argv)
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/core/management/init.py", line 363, in execute_from_command_line
utility.execute()
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/core/management/init.py", line 355, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/core/management/base.py", line 327, in execute
self.check()
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/core/management/base.py", line 359, in check
include_deployment_checks=include_deployment_checks,
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/core/management/base.py", line 346, in _run_checks
return checks.run_checks(**kwargs)
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/core/checks/registry.py", line 81, in run_checks
new_errors = check(app_configs=app_configs)
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/core/checks/urls.py", line 16, in check_url_config
return check_resolver(resolver)
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/core/checks/urls.py", line 26, in check_resolver
return check_method()
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/urls/resolvers.py", line 254, in check
for pattern in self.url_patterns:
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/utils/functional.py", line 35, in get
res = instance.dict[self.name] = self.func(instance)
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/urls/resolvers.py", line 405, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/utils/functional.py", line 35, in get
res = instance.dict[self.name] = self.func(instance)
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/site-packages/django/urls/resolvers.py", line 398, in urlconf_module
return import_module(self.urlconf_name)
File "/home/felix/.virtualenvs/typeidea-env/lib/python3.6/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 994, in _gcd_import
File "", line 971, in _find_and_load
File "", line 955, in _find_and_load_unlocked
File "", line 665, in _load_unlocked
File "", line 678, in exec_module
File "", line 219, in _call_with_frames_removed
File "/home/felix/workspace/typeidea/typeidea/urls.py", line 99, in
url(r'^xadmin/', xadmin.site.urls),
File "/home/felix/workspace/typeidea/xadmin/sites.py", line 339, in urls
return self.get_urls(), self.name, self.app_name
File "/home/felix/workspace/typeidea/xadmin/sites.py", line 330, in get_urls
for path, clz, name in self._registry_modelviews
File "/home/felix/workspace/typeidea/xadmin/sites.py", line 330, in
for path, clz, name in self._registry_modelviews
File "/home/felix/workspace/typeidea/xadmin/sites.py", line 289, in create_model_admin_view
return self.get_view_class(admin_view_class, option_class).as_view()
File "/home/felix/workspace/typeidea/xadmin/sites.py", line 281, in get_view_class
dict({'plugin_classes': plugins, 'admin_site': self}, **opts))
File "/home/felix/workspace/typeidea/xadmin/sites.py", line 29, in new
return type.new(cls, str(name), bases, attrs)
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

第10章 代码运行发现的问题

在github下载了本书第10章代码的分支typeidea-book-10-xadmin-and-other,运行后发现以下问题:

1.在管理后台添加分类时,会要求必须填入文章标题,填写文章标题并保存,页面出现提示“请修正下面的错误。”,但却没有显示错误出现在哪个字段上,导致无法保存成功;尽管可以点击文章所在的区域的“x”按钮关闭文章字段从而保存分类成功, 但这个页面上的关联逻辑从业务角度讲是不合理的,会对使用者造成困扰。

  1. 在上面第1步关闭关联的文章字段后添加分类成功,再添加标签成功,然而新增文章时,分类下拉框不能显示分类数据,标签下拉框显示成了文本框,也无法显示标签数据,导致无法添加文章。

勘误:5.4.2节,第103页

勘误:5.4.2节,第103页
第二行代码少了缩进:

try:
post = Post.objects.get(id=1)
# 其余代码省略

应改为:

try:
    post = Post.objects.get(id=1)
# 其余代码省略

勘误:第 1 版第 1 次印刷,123页,6.2.4 节

第一段代码上面的文字:

我们通过 Form 来定制 status 这个字段的展示:

此处笔误,与下面代码对照,改的是 desc 字段而不是 status,所以应改为:

我们通过 Form 来定制 desc 这个字段的展示:

第二章节的代码都不能运行

socket_server.py
这个代码在anaconda上直接报错了,能够看下吗?

File "d:\python_project\django-practice-book\code\chapter2\section2\socket_server.py", line 15, in
response = b'\r\n'.join(response_params)
TypeError: sequence item 0: expected a bytes-like object, str found

还有这个fork_server.py也报错,能够看下吗
pycd : 无法将“pycd”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1

  • pycd 'd:\python_project\django-practice-book'; ${env:PYTHONIOENCODING ...
  •   + CategoryInfo          : ObjectNotFound: (pycd:String) [], CommandNotFoundException
      + FullyQualifiedErrorId : CommandNotFoundException
    
    

http://127.0.0.1:8000
Traceback (most recent call last):
File "c:\Users\pengx.vscode\extensions\ms-python.python-2019.1.0\pythonFiles\ptvsd_launcher.py", line 45, in
main(ptvsdArgs)
File "c:\Users\pengx.vscode\extensions\ms-python.python-2019.1.0\pythonFiles\lib\python\ptvsd_main_.py", line 348, in main
run()
File "c:\Users\pengx.vscode\extensions\ms-python.python-2019.1.0\pythonFiles\lib\python\ptvsd_main_.py", line 253, in run_file
runpy.run_path(target, run_name='main')
File "D:\ProgramData\Anaconda3\lib\runpy.py", line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File "D:\ProgramData\Anaconda3\lib\runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "D:\ProgramData\Anaconda3\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "d:\python_project\django-practice-book\code\chapter2\section2\fork_server.py", line 60, in
main()
File "d:\python_project\django-practice-book\code\chapter2\section2\fork_server.py", line 49, in main
conn, address = serversocket.accept()
File "D:\ProgramData\Anaconda3\lib\socket.py", line 212, in accept
fd, addr = self._accept()
BlockingIOError: [WinError 10035] 无法立即完成一个非阻止性套接字操作。

怎么一开始示例代码就不能运行啊

勘误:第 1 版第 1 次印刷 9.1.1 节 185 页

倒数第 6 行的 SQL 语句:
SELECT * FROM post WHERE title ILIKE '%<keyword>%' or title ILIKE '%<keyword>%'
第二个 title 应为 desc,应改为:
SELECT * FROM post WHERE title ILIKE '%<keyword>%' or desc ILIKE '%<keyword>%'

[勘误]第5章 106页 代码缩进问题

106页,F表达式里,第二个代码块缩进有问题,跟其他地方的缩进风格不一致

from django.db.models import F
    post = Post.objects.get(id=1)
    post.pv = F('pv') + 1
    post.save()

似乎用下面的方式比较好:

from django.db.models import F
post = Post.objects.get(id=1)
post.pv = F('pv') + 1
post.save()

勘误:第9章 P209

上属第6行

 <news:news>
            {% if url.item.created_time %}
            <news:publication_date>{{ url.item.create_time|date:"Y-m-d" }}</news:publication_date>
            {% endif %}
            {% if url.item.tags %}
            <news:keywords>{{ url.item.tags }}</news:keywords>
            {% endif %}
        </news:news>

create_time 应该为created_time

P142页 , 关于过滤的问题

        try:
            tag = Tag.objects.get(id=tag_id)
        except Tag.DoesNotExist:
            post_list = []
        else:
            post_list = tag.post_set.filter(status=Post.STATUS_NORMAL)

这里的tag.post_set是什么作用? post_set是什么语法?

[勘误]第十章P224页

autocomplete.py

用于判断用户是否登录的

self.request.user.is_authenticated()

应改为

self.request.user.is_authenticated (去掉括号)

is_authenticated是一个属性而不是一个方法。
【注】django-2.0,不同版本不知道是否存在差异

关于《DJango企业开发实战》的两个问题

作者,您好,很有幸拜读您的大作,在边看边学习的过程中,发现以下两个问题:
1、在python3.81和DJang3.3环境中,10.3.5中blog/adminforms.py页 dal模块中的两个方法 MoelSelect2()和MoelSelect2Multiple()总是会被报错,导致程序不能运行。
2、大作中所介绍的第三方管理后台 xadmin在python3.81和DJang3.3环境中报错太多,无法使用。

[勘误]第一章P10页

图1-1,SideBar中,created_time的字段类型不应该为str,应该为datetime类型!
本书中所有这张关系图中的SideBar的created_time字段类型都是错的!

第11章P248遇到一个问题

在设置view_name='api-post-detail'时报错

Request Method: GET
http://127.0.0.1:8000/api/post/?offset=2
1.11.10
ImproperlyConfigured
Could not resolve URL for hyperlinked relationship using view name "api-post-detail". You may have failed to include the related model in your API, or incorrectly configured the lookup_field attribute on this field.
C:\ProgramData\Anaconda3\envs\dBlog\lib\site-packages\rest_framework\relations.py in to_representation, line 391
C:\ProgramData\Anaconda3\envs\dBlog\python.exe
3.6.8

勘误:7.2.4 节 150页

修改post_list和post_detail时,应该先在views.py中导入SideBar包:
from config.models import SideBar

第3章 测试代码敲好了,如何进行代码测试

按照3.4.3章节提示,在test.py 中添加了StudentTestCase类和各个函数的代码。

可是并没有找到如何进行测试的方法,请问我该如何进行测试。

我的环境是: Mac + python3.6 + django2.1.7 + PyCharm2018.3

错别字~

https://github.com/the5fire/django-practice-book/blob/master/chapter1/section3.md

导航只是分类,默认展示在顶部。同时每篇文章都需要有面包屑,以告知读者目前所处 问题,面包屑组成如下:首页>文章所属分类> 正文。导航的顺序作者可以进行设置权重,权重高者在前。顶部最多展示6个分类,多余的分类展示到底部。

逛到前辈的github,打算把md和源码都过一遍hhh,我自己也有写过一个Django-blog。地址是:https://github.com/enjoy-binbin/Django-blog

[勘误]第七章P147

query = cls.objects.filter(status=cls.STATUS_NORMAL)

改为

return cls.objects.filter(status=cls.STATUS_NORMAL)

settings文件拆分错误

setting的拆分, 项目运行没有问题,但是在pychram中,打开python console后,会出现以下错误:
Traceback (most recent call last):
File "", line 6, in
File "D:\myProject\typeidea\lib\site-packages\django_init_.py", line 19, in setup
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
File "D:\myProject\typeidea\lib\site-packages\django\conf_init_.py", line 79, in getattr
self.setup(name)
File "D:\myProject\typeidea\lib\site-packages\django\conf_init.py", line 64, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFIG, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

以下是我manage.py的代码:

import os
import sys

def main():
profile = os.environ.get('TYPEIDEA_PROFILE', 'develop')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', f'typeidea.settings.{profile}')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)

if name == 'main':
main()

我的目录结构是
image

第二章一个问题WSGI

为啥非要非阻塞+多线程,但是我阻塞监听+多线程也可以完成多人同时访问啊,

勘误:第3章 P50 关于 middleware 的 process_template_response描述疑似有误

version : Django==1.11.29

原文描述:

执行完上述方法, 并且Django帮我们执行完view, 拿到最终的 response 后, 如果使用了模板的 response (这里指通过 return render(request, 'index.html', context={}) 方式返回的 response), 就会来到这个方法中.

实际测试后发现:

def index(request):
    students = Student.get_all()
    form = StudentForm()
    context = {
        "students": students,
        "form": form,
    }

    return render(request, 'index.html', context=context)
    # return TemplateResponse(request, "index.html", context=context)
  1. 执行上述代码, 只会进入middleware的 process_response 方法;
  2. 执行 return TemplateResponse(request, "index.html", context=context) 而非 return render(request, 'index.html', context=context) 才会进入 process_template_response 方法中

这是我的发现, 欢迎大家指出我过程中是否存在问题导致和 书籍 中 描述的结论不符.

第六章 P122 关于自定义静态资源引入的问题

按照书上提示 , 将 css 与 js 引入到自定义的 class Media 中
代码片段如下:

    class Media:
        css = {
            'all' : ('https://cdn.bootcss.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css'),
        }
        js = ('https://cdn.bootcss.com/bootstrap/4.0.0-beta.2/js/bootstrap.bundle.js',)

当运行 runserver 后, 页面无任何变化 , 提示框里提示很多
"GET /static/.* HTTP/1.1" 404 1616 的字样(.*表示出现的各种字符统称)

请问是否正确?

第二次印刷版 P165 [问题纠正]

urlpatterns = [
    #配置后台页面
    url(r'^super_admin/', super_site.urls, name='super-site'),
    url(r'^custom_admin/', custom_site.urls, name='custom-site'),
    url(r'^admin/', admin.site.urls, name='admin'),

    #配置用户页面
    url(r'^$', IndexView.as_view(), name='index'),
    url(r'^category/(?P<category_id>\d+)/$', CategoryView.as_view(),
        name='category-list'),
    url(r'^tag/(?P<tag_id>\d+)/$', TagView.as_view(),
        name='tag-list'),
    url(r'^post/(?P<post_id>\d+).html$', PostDetailView.as_view(),
        name='post-detail'),
    url(r'^links/$', links, name='links')
]

其中的 url(r'^post/(?P<post_id>\d+).html$', PostDetailView.as_view(), name='post-detail'),html$后面添加/,最后改为html/$

[勘误]第三章 P56页

注意 框中

原句:读者可以尝试把test.py文件中的 student.sex_show 改为student.get_sex_display试试。
修改:student.get_sex_display 需要加 括号,改为 student.get_sex_display() 。

勘误:第9章 P124

CommentView的post方法中,关于评论的提交,如果评论有效,会直接跳转到评论的来源页(target)。

如果这样,下方模板页中“评论成功!”的部分,是不需要的。

第9章 P196遇到一个问题

在引入comment_blocks发生了报错
后在setting的options里加入了

            'libraries':{
                'comment_block': 'comment.templatetags.comment_block',
            },

得以解决

标签字段在web端无法显示,

已完整按照书中代码敲至第九章通过manage.py shell可以查到tag是有内容的,但是web页面上无法看到,已下载第九章所有代码在本地运行,也是无法看到该字段内容,还请知道的同仁给个指点,
image

勘误:第 1 版第 1 次印刷 6.1.1 节 113 页

代码部分第 7 行,原文为:
list_display_links = []
根据上下文,此处作者的用意应该是禁用位于列表页每行行首的超链接,这个链接可以跳转到编辑页面,但是这样写没有效果,应当改成:
list_display_links = None

这是我的个人理解,不一定正确,错了请包涵。

第八章 179页 错误

179页 基于bootstrap美化页面
list.html 页面
分类的url,cate.id 需要改为 post.id

第三章的admin.py 在python3.6下运行错误

原文代码:
fieldsets = (
(None, {
'fields': (
'name',
('sex', 'profession'),
('email', 'qq', 'phone'),
'status',
)
}),
)
应修改为
fieldsets = [
(None, {
'fields': (
'name',
('sex', 'profession'),
('email', 'qq', 'phone'),
'status',
)
})
]
不然会直接报错误:
(admin.E008) The value of 'fieldsets[0]' must be a list or tuple

第五章settings文件拆分错误

书中对于第五章django 的setting的拆分 缺少了一步,拆分后项目无法正常运行的
需要在settigns/init.py文件中加入from.base import *
from .develop import *
才能正常

第2次印刷 第114页错误

页面最下方:
def post_count(self, obj):
return obj.post_set.count()

把post_count加入list_display中后,报错如下:
image

我的django版本是2.2.2的

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.