记录软件工程课程项目开发时遇到的各种小问题(django)
1.python manage.py makemigrations 无效/无法检测出model的变化
在修改了models.py之后,我们想要更新数据库的表,使用了python manage.py makemigrations 命令之后,显示出"No changes detected",我们因此无法migrate这个数据库。
解决办法:
在makemigrations 后面增加APP的名字
比如说:
python manage.py makemigrations coder_market
这时就能检测出哪些表有变化了
2.无法使数据库在admin后台可视化
网上的方法大多是修改admin.py来修改,但是我使用这样的办法无效。发现将register的代码放到models.py时可以使用
from __future__ import unicode_literals
from django.contrib.auth.models import User
from django.db import models
from django.contrib import admin
'''
class user_login(models.Model):
username = models.CharField(max_length=30)
password = models.CharField(max_length=30)
identity = models.CharField(max_length=15)
'''
'''
class identity(models.Model):
username = models.ForeignKey(User)
iden = models.CharField(max_length=10)
'''
class publisher(models.Model):
username = models.CharField(max_length=30)
order_project = models.IntegerField()
presonal_information = models.CharField(max_length=100)
accept_information = models.TextField()
class receiver(models.Model):
username = models.CharField(max_length=30)
get_project = models.IntegerField()
presonal_information = models.CharField(max_length=100)
tag = models.CharField(max_length=50)
accept_information = models.TextField()
class manager(models.Model):
username = models.CharField(max_length=30)
manage_project = models.IntegerField()
presonal_information = models.CharField(max_length=100)
tag = models.CharField(max_length=50)
accept_information = models.TextField()
class project(models.Model):
number = models.IntegerField()
project_publisher = models.CharField(max_length=30)
project_content = models.TextField()
project_receiver = models.CharField(max_length=30)
project_manager = models.CharField(max_length=30)
tag = models.CharField(max_length=50)
class UserProfile(models.Model):
#user = models.ForeignKey(User, unique=True, verbose_name='profile')
user = models.OneToOneField(User, unique=True)
identity = models.CharField(max_length=15)
admin.site.register(publisher)
admin.site.register(receiver)
admin.site.register(project)
admin.site.register(UserProfile)
3.django无法使用login
遇到了一个登录失败的问题。
一个初始版本的login如下:
def login(request):
if request.method == "POST":
print request.POST['login_username'],request.POST['login_password']
user = django.contrib.auth.authenticate(username=request.POST['login_username'],
password=request.POST['login_password'])
if user is not None:
django.contrib.auth.login(request, user)
return HttpResponseRedirect('/hello')
else:
return HttpResponse('fail to login')
return render(request, 'login.html', {})
我发现在判断user是不是存在的时候就一直判断不存在,反复检查登录的代码,虽然初级,但是应该是正确的。最后发现问题存在于注册上
注册时,我们的代码如下
def register(request):
if request.method == 'POST':
reg = User()
reg.username = request.POST['register_username']
reg.password = request.POST['register_password'] #问题出在这一行
reg.save()
pro = UserProfile(user_id=reg.id)
pro.identity = request.POST['register_identity']
pro.save()
return HttpResponse("run!")
return render(request, 'register.html', {})
事实上问题出在密码的设置上,我们应该使用django内置的set_password方法,即可解决问题。
reg.set_password(request.POST['register_username'])
4.在django的admin后台看到的各个表的值都是乱码
出现问题的原因是在model.py内的类没有加__unicode__()方法,导致admin不知道拿哪一个字段来显示。改进的方法类似下面的代码
from __future__ import unicode_literals
from django.contrib import admin
from django.contrib.auth.models import User
from django.db import models
# Create your models here.
class publisher(models.Model):
username = models.CharField(max_length=30)
order_project = models.IntegerField()
presonal_information = models.CharField(max_length=100)
accept_information = models.TextField()
#下面这个方法加上
def __unicode__(self):
return self.username
5.无法提交HTML表单
解决方法:在HTML表单内加上{% csrf_token %}
<form method="post">{% csrf_token %}
<table>
后面省略
6.(1054, "Unknown column 'coder_market_project.status' in 'field list'")
问题可能是对数据库做了修改之后只进行了python manage.py makemigrations
没有做python manage.py migrate
我想问题可能是在django 的数据库抽象层做了改动之后,但是连接的数据库并没有改变表或者是字段,在增删改查的时候django在对应的数据库里找不到相应的数据
7.django数据库查询时不确定是否存在
可以用类似下面的方法。核心是DoesNotExist异常
try:
p = User.objects.get(username='haha')
except User.DoesNotExist:
return HttpResponseRedirect('/hello')
记录软件工程课程项目开发时遇到的各种小问题(django)的更多相关文章
- Android 项目优化(六):项目开发时优化技巧总结
在之前我们讲了很多能够优化 Android 开发项目质量的方案,这些方案更多的是从一些比较专精的方向切入的,阐述的是一些比较重要且独立的优化方案. 本文我们将总结一下在日常开发过程中我们能够使用的一些 ...
- 使用Eclipse进行Javaweb项目开发时,如何设置外置浏览器Chrome
使用Eclipse开发Javaweb项目时,在Eclipse中显示页面不是很好,那么如何让它自动打开外置浏览器呢?操作如下
- vue项目开发时怎么解决跨域
vue项目中,前端与后台进行数据请求或者提交的时候,如果后台没有设置跨域,前端本地调试代码的时候就会报“No 'Access-Control-Allow-Origin' header is prese ...
- 【问题记录】web项目访问时出现404
请一定检查一下项目的Context root是否是你访问时使用的. Context root设置为/时,可以直接用ip+端口访问. Context root设置为项目名的,访问时请带上项目名. 设置方 ...
- iOS开发--Swift 最近项目开发中遇到的一些小问题与解决方法
1, Swift 修改导航栏颜色 self.navigationController?.navigationBar.barTintColor 2, Swift button 属性设置时直接进行初始化 ...
- 最近在用mvc3开发时遇到的一些小问题与解决方法....
问题一:控制器中的字符串如何显示在view的javascript中?例如ViewBag.str="1,2,3,4,5"; 解决办法:例如:<script type=" ...
- TMS320F28335项目开发记录1_CCS的使用介绍
CCS使用介绍 一.前言 本系列文章记录本人实际项目开发时对ti的DSP28335,以及CCS开发环境等的学习与记录,相对于2812来说,28335的资料还是比較少的,只是原理是相通的,28335说白 ...
- react项目开发中遇到的问题
前言 作为一个前端爱好者来说,都想在react上一试生手,那么在搭建react项目开发时,肯定会有这样或者那样的问题,尤其是对初学者来说,下面就个人在开发过程中遇到的问题总结一下,好在有google帮 ...
- 如何实现从Java入门到服务端项目开发的进阶?
对于打算入门或者刚刚入门学习Java的人来说,刚开始接触这门学科,往往会觉得不知所措,也会觉得很迷茫.结合前人经验,就从入门到进阶对于Java的学习而言,应该对于学习时间.目标和内容规划有一个清晰的定 ...
随机推荐
- PC分配盘符的时候发现==》RPC盘符不可用
服务器汇总:http://www.cnblogs.com/dunitian/p/4822808.html#iis 服务器异常: http://www.cnblogs.com/dunitian/p/45 ...
- JavaScript Math和Number对象
目录 1. Math 对象:数学对象,提供对数据的数学计算.如:获取绝对值.向上取整等.无构造函数,无法被初始化,只提供静态属性和方法. 2. Number 对象 :Js中提供数字的对象.包含整数.浮 ...
- 按需加载.js .css文件
首先,理解按需加载当你需要用到某个js里面的函数什么鬼,或者某个css里的样式的时候你才开始加载这个文件. 然后是怎样实现的,简单来说就是在js中动态的createElem<script> ...
- Android-armebi-v7a、arm64-v8a、armebi的坑
先来一波扫盲: armeabi:针对普通的或旧的arm v5 cpu armeabi-v7a:针对有浮点运算或高级扩展功能的arm v7 cpu(32位ARM设备) arm64-v8a:64位ARM设 ...
- Android注解使用之通过annotationProcessor注解生成代码实现自己的ButterKnife框架
前言: Annotation注解在Android的开发中的使用越来越普遍,例如EventBus.ButterKnife.Dagger2等,之前使用注解的时候需要利用反射机制势必影响到运行效率及性能,直 ...
- Javascript实现HashTable类
散列算法可以尽快在数据结构中找出指定的一个值,因为可以通过Hash算法求出值的所在位置,存储和插入的时候都按照Hash算法放到指定位置. <script> function HashTab ...
- 由js apply与call方法想到的js数据类型(原始类型和引用类型)
原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b, ...
- 中国CIO最关心的八大问题(上)
中国CIO最关心的八大问题(上) 近期,ITValue和ValueResearch联合展开<IT决策者投资与生存状态大调查>,调查范围从关注CIO本身,延展至关注CIO所供职企业--其赖以 ...
- Linux基础介绍【第五篇】
linux权限位 Linux文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件属主权限.属组权限.其他用户权限. r:read可读权限,对应数字4: w:write可写权限,对应数字 ...
- .Net 初步学习笔记之一——.Net 平台与.Net FrameWork框架的关系
.Net 包含两部分 .Net平台 和.Net FrameWork 框架 1..Net FrameWork框架包含于.Net平台. .Net FrameWork提供环境和支撑保证.Net平台运行. 2 ...