Django学习笔记

4、模板初学中,照书例django book 出现以下异常
    raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

查Google得:

from django.template import Template,Context
### 加上以下两句
from django.conf import  settings  
settings.configure()		   
t = Template("My name is {{ name }}.")
c = Context({"name":"Stipho"})

t.render(c)


#####################################

第六章,admin 管理学习

按照示例做出现以下情况:

ImportError at /admin/

Exception Value:  No module named urls

url 中的正则是:urlpatterns = patterns('',(r'^admin/', include('django.contrib.admin.urls')),)

这是老版本的设置。新版本(1.2.1)中应该这样设置:

在settings.py中设置:


INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.admin', ###注意,1.2.1一定要添加
    'mydjango.books',
)

在urls.py中设置:

添加 
from django.contrib import admin

取消注释:
admin.autodiscover()


在url pattern中设置:


urlpatterns = patterns('',
    (r'^admin/(.*)',admin.site.root),
)


###如需要打开admindoc,则需要以下额外设置:

INSTALLED_APPS中添加:
	'django.contrib.admindocs',
urls.py中注释:
urlpatterns = patterns('',
	(r'^admin/doc/', include('django.contrib.admindocs.urls')),
)

另外,还需要python的docutils类库,但windows下尚未找到。
下载地址:http://docutils.sourceforge.net/


汉化后台:
在setting.py里将LANGUAGE_CODE从en-us改为zh-CN 



  Q:可以登录后却发现没有要管理的内容(即手册中所说的“主管理索引”)

A: 在需要管理的app(这里是books)下建立admin.py,将需要管理的模块添加

from mysite.books.models import *
from django.contrib import admin
 

admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(Book)

并重启server

Q:一不小心删除了管理员用户怎么办?
A:
在你第一次运行 syncdb 时,你很可能被问起是否创建一个 superuser ,如果那时你没有创建 superuser ,
你需要运行 djang/contrib/auth/bin/create_superuser.py 来创建一个admin用户,否则你就不能登录到管理界面里去!方法,如下:

(1)在新版本中(1.2.1)windows下:E:\workspace\mydjango>python manage.py createsuperuser 然后依次输入用户名、邮箱、密码等
(2)在老版本中使用python /path/to/django/contrib/auth/create_superuser.py

参考:http://docs.djangoproject.com/en/1.2/topics/auth/#creating-superusers


##################################

第七章、表单处理

Q:运行例子时

Could not import mydjango.books.views. Error was: cannot import name newforms

A:原因是1.2.1版本的只有forms这个模块,把
from django import newforms as forms 改成 from django import forms 即可!

Q:表单提交的时候出现:

Forbidden (403)

CSRF verification failed. Request aborted.

A:原因是django会对提交的数据进行跨站攻击保护,所以需要表单令牌验证

参考这里:http://docs.djangoproject.com/en/dev/ref/contrib/csrf/

解决办法:在settings.py 找到

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.csrf.CsrfResponseMiddleware', ###添加这句,用于表单令牌验证
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

另外在模板中添加验证的令牌字段 :
<form action="" method="POST">
    {% csrf_token %}


---------------------------------------
Q:提交表单,并对表单验证时出现以下异常:

'ContactForm' object has no attribute 'clean_data'
原因:新版的forms模块已经把clean_data更改成 cleaned_data
解决:把clean_data=>cleaned_data

Q:使用from django.forms import form_for_model会出现:
Error was: cannot import name form_for_model
原因:新版本(1.2.1)中对form的model定义使用了新的名称
解决办法:

参考http://docs.djangoproject.com/en/1.2/topics/forms/modelforms/

from django.forms import ModelForm	###重新定义
class PublisherForm(ModelForm):		###定义元数据
    class Meta:				
        model = Publisher


################################################################################################################
第八章 
视图重点:带有命名组的url

(r'articles/(?P<year>\d{4})/$','year_archive'), ##把year当成形参
(r'articles/(?P<year>\d{4})/(?P<month>\d{2})/$','month_archive'), # year和month都是形参

函数的定义:
mydjango.views中
# year archive
def year_archive(request,year):
    html = 'current year is :',year
    return HttpResponse(html)

# month archive

def month_archive(request,month,year):
    html = 'current year and month is :',year,'-',month
    return HttpResponse(html)

需要注意的是如果在URLconf中使用命名组,那么命名组和非命名组是不能同时存在于同一个URLconf的模式中的。
如果你这样做,Django不会抛出任何错误,但你可能会发现你的URL并没有像你预想的那样匹配正确


                     如果有任何命名的组,Django会忽略非命名组而直接使用命名组。

§                     否则,Django会把所有非命名组以位置参数的形式传递。

§                     在以上的两种情况,Django同时会以关键字参数的方式传递一些额外参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习Django时,使用PyCharm作为开发工具可以提高效率。PyCharm是一款功能强大的Python集成开发环境,它提供了丰富的功能和工具,可以帮助开发者更好地编写和调试Django应用程序。 在学习Django的过程中,可以使用PyCharm创建Django项目,并使用其内置的Django支持功能来简化开发过程。PyCharm可以自动识别Django项目的结构,并提供代码补全、语法检查、调试等功能,帮助开发者更快地编写和调试代码。 此外,PyCharm还提供了集成的版本控制系统,如Git,可以方便地管理和追踪代码的变化。它还支持自动化测试和部署,可以帮助开发者更好地进行项目管理和发布。 总之,使用PyCharm作为开发工具可以提高Django学习的效率和便利性。它的强大功能和友好的用户界面使得开发者可以更专注于代码的编写和项目的开发。\[1\] \[2\] \[3\] #### 引用[.reference_title] - *1* *3* [PyCharm平台下初学Django框架](https://blog.csdn.net/howard2005/article/details/93491364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [pycharm平台下的Django教程](https://blog.csdn.net/Sunshine_ZCC/article/details/73918408)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值