使用djiango 创建网站
如果发现用户登录异常等情况请不要惊慌,换个浏览器就好了,谷歌有这个问题,也困扰我很久。
如果搭建过程,发现新建topic异常等现象,把不要惊慌,可能是你没有进行数据重新清理,请彻底格式化数据库就好了。
1.这不是一个容易的事,如果你之前并没有做过。
2.我这是基于pycharm
admin 是用户主页,admin 不是必须的,admin中可以注册你的模型(数据库模型)
这个地方添加你的app名字
templates模板路径地址
接下来需要创建数据库
python manage.py migrate
创建超级用户
python manage.py createsuperuser
用户名和密码必须要输入,密码必须包含8个字符
每次添加新的数据库模板我们需要,我们要调整数据库,迁移数据库
python manage.py makemigrations learning_logs
python manage.py migrate
接下来使用shell来调试
对数据库做了改动如果数据不重要可以直接清空,就不用下面的步骤了
python manage.py flush
#首先进行数据关联用户,先启动shell
python manage.py shell
from django.contrib.auth.models import User
User.objects.all()
#关联数据
for user in User.objects.all():
(table)
print(user.username,user.id)
#迁移数据库 以下命令要在shell里面输入(ctr+z)
python manage.py makemigrations learning_logs
#选择数据1
python manage.py migrate
python manage.py shell
#下面是一些验证数据 from learning_logs.models import Topic topics = Topic.objects.all()
#主题所有者打印
print(topic,topic.owner)
for topic in topics: (table 空格下面的语句不然会出错) print(topic.id,topic) t=Topic.objects.get(id=1) t.text t.date_added t.entry_set.all()
这几条似乎很重要,负责后面网站添加数据,数据库貌似会出一些问题
我大概遇到了这几个问题
上面的 fields 决定了展现用户form的哪几项,有的如果用户没有创建,django会帮你创建,有时候会导致一些我们不想要的东西,所以只列举你想要创建的对象,不能选择 --all--
forms是表单,我们可以通过指定 get和post来区别是获取一个空表单还是提交表单
很庆幸 它工作了
有 id可以填,没有就不要添参数会出错
通过
python manage.py startapp users
可以快速创建一个新的应用程序目录,包含必备的文件树
如果发现一些无法控制网页错乱,无法跳转等事项请确认是不是浏览器缓存的故障,更换浏览器或者清空cookie可能能够解决。
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "D:\python_work\myweb\learning_logs\models.py", line 6, in <module>
class Topic(models.Model):
File "D:\python_work\myweb\learning_logs\models.py", line 10, in Topic
owner = models.ForeignKey(User)
TypeError: __init__() missing 1 required positional argument: 'on_delete'
owner = models.ForeignKey(User,on_delete=models.DO_NOTHING)#不然说参数错误 关联到一起
python manage.py shell from django.contrib.auth.models import User User.objects.all() for user in User.object.all(): print(user.username,user.id)