DjangoのFilePathFieldフィールドの使い方


class FilePathField(path=None、mach=None、recursive=False、max_length=100、**options)
一つのChar Fieldは、ファイルシステム内の特定のディレクトリのファイル名に限定されます。3つのパラメータがあります。最初は必要です。
FilePathField.path
必要です。このFilePathFieldは、選択されたディレクトリの絶対ファイルシステムパスを得るべきです。例えば、「/home/imags」。
FilePathField.match
オプションのファイル名にマッチする正規表現としてFilePathFieldを使用します。正規表現は完全なパスではなく基本ファイル名に作用します。例えば、「foo.*.txt$」はfoo 23.txtというファイルに一致しますが、bar.txtまたはfoo 23.pngには一致しません。
FilePathField.recursive
オプション.TrueまたはFalse.デフォルトはFalseです。すべてのサブディレクトリのパスが含まれているかどうかを宣言します。
FilePathField.allow_files
オプション.TrueまたはFalse.デフォルトはTrue.指定された場所のファイルが含まれているかどうかを宣言します。このパラメータまたはallow_foldersにはTrueが必要です。
FilePathField.allow_folders
はオプションです。TrueまたはFalseを入力します。デフォルトはFalseです。指定された場所のフォルダが含まれているかどうかを宣言します。このパラメータまたはallow_filesにはTrueが必要です。
もちろん、これらのパラメータは同時に使用できます。
一つの注意が必要なのは、matchが基本ファイル名だけにマッチしています。全体のファイルパス(full path)ではなく、例えば、
FilePath Field(path=「/home/imags」、match=「foo.*」、recursive=True)
・・マッチング/home/imags/foo.pngを/home/imags/foo/bar.pngとします。基本ファイル名(foo.pngとbar.png)のみのマッチングが許可されていますので。
FilePathFieldの例は、varrhar列のデフォルトの最大長さは100文字です。他のフィールドとして使用するmax_を変更できます。length最大長さ。
ほとんどのウェブサイトは写真を挿入する時、普通はこのように処理します。
大きなサイズ図をアップロードすると、自動的にサムネイルが生成されます。ホームページにサムネイルを挿入し、大きなサイズの図にアドレスを指定します。
だからDjangoでは、メインフィールドをこのように定義します。

title = models.CharField(max_length = 120)
img = models.ImageField(upload_to = 'screenshots')
thumb = models.FilePathField(path = 'screenshots/thumb')
なぜthumbはImageFiledではないですか?Adminにアップロードされたのは大図であり、サムネイルはアップロードではなく、自動的に生成されるからである。だからこのように書いています。具体的な処理はROOTは/tmpで、MEDIA_URLはhttp://localhost/media/:
画像(test.jpg)をMEDIA_にアップロードする。ROOT/screenshots、この時の属性はimg.name=screenshotts/test.jpg、img.path=/tmp/screenshots/test.jpg、img.url=です。http://localhost/media/screenshots/test.jpg
画像のサイズをサムネイルにする必要があるかどうかを判断します。必要でなければ、直接にimg.pathからthumbにコピーします。そうでなければ、1枚のサムネイルを生成します。
ウェブページに画像を挿入するときは、簡単に「a href=「{%object.img.url%]」rel=「external nofollow」」<!%object.title%]」src=「{%object.thumb]」alt=「{%object.title}a/」。objectはScrenShotを表します。
追加知識:django FileFIeldとImageFieldアップロード経路の書き換え
余計なことを言わないで、コードを見てください。

def get_file_path(instance, filename):
  return 'file/document/%s/%s/%s' % (instance.period.code, instance.student.college.code, filename)

class Document(models.Model):
  title = models.CharField(max_length=50, blank=True, verbose_name="   ", default="")
  student = models.ForeignKey('accounts.Student', verbose_name="  ")
  period = models.ForeignKey('systemconfig.Periods', verbose_name="  ")
  file = models.FileField(upload_to=get_file_path, verbose_name="  ", blank=True, null=True)
  mark = models.SmallIntegerField(null=True, blank=True, verbose_name="  ")
  create_time = models.DateTimeField(verbose_name="    ", auto_now_add=True)

  class Meta:
    verbose_name = "      "
    verbose_name_plural = "      "
    get_file_path

def get_file_path(instance, filename):
return 'file/document/%s/%s/%s' % (instance.period.code, instance.student.college.code, filename)


class Document(models.Model):
  title = models.CharField(max_length=50, blank=True, verbose_name="   ", default="")
  student = models.ForeignKey('accounts.Student', verbose_name="  ")
  period = models.ForeignKey('systemconfig.Periods', verbose_name="  ")
  file = models.FileField(upload_to=get_file_path, verbose_name="  ", blank=True, null=True)
  mark = models.SmallIntegerField(null=True, blank=True, verbose_name="  ")
  create_time = models.DateTimeField(verbose_name="    ", auto_now_add=True)

class Meta:
    verbose_name = "      "
verbose_name_plural = "      "
上記のDjangoのFilePathFieldフィールドの使い方は、小編集が皆さんに提供した内容の全部です。参考にしていただければと思います。よろしくお願いします。